혁신을 이룹니다, 오딘박스(OdinBOX)

언제나 어디서나 오딘박스와 함께!

오픈소프트웨어, 11-22 수업내용 + 부가적인 내용

간지뽕빨리턴님 2019. 11. 24. 19:47
반응형
  오픈소프트웨어

[ "복습" ]

깃(Git) - (분산 버전(이력) 관리 시스템)

버전이란 ? [기초적인 것을 기억하고 있는지?] 

의미 있는 파일의 변화 : 기능개선, 버그 수정, 커스텀마이징 등

 

로컬 VCS  중앙집중식 VCS 분산 VCS

- 자세한 내용은 이전의 글을 참고

 

 

Git 기본 사용법

 

 

출처 : QoonTree DEV

 

Branch

branch - 스냅샷의 포인터 -> 커밋(commit)을 가르킴

- on branch master - 현재 브랜치(branch)를 master라고 함

- HEAD는 단 하나!의 브랜치저격한다

- git의 강력한 기능, 다른 것과 구별되는 것

- 브랜치 작업 내용 'MERGE' 과정을 거쳐 메인 작업 통합 가능

 

첫 init 시  프로젝트의 working directory의 파일들을 트랙킹 하고 있지 않다는 것이다.

 

Git status

Untracked : git이 File을 추적하고 있지 않은 상태 [적색표시]

 

modified :  git이 추적하고 있고 commit 됐을 때 스냅샷과 비교시 수정 된 상태 [적색표시]

 

unmodified : git이 추적하고 있고 수정되지 않은 파일 [녹색표시]

Tracked [관리대상][Unmodified, Modified, Staged]

 

Untracked - 관리대상 아님

 

 

출처 : neon

 

Git 저장소 만들기 [ 2가지 ]

 

1. 기존 디렉토리를 Git 저장소로 만들기 ( 현재 작업 중인 디렉토리 대상 )

- 프로젝트 디렉토리로 이동하여 다음 명령 실행

$Git init [ 해당 디렉토리를 깃(Git) 관리폴더로 만들겠다. ]

- 아직 프로젝트 디렉토리의 어떤 파일도 버전 관리가 시작되지 않았음

$git status [ git의 현재 상태 ]

버전 관리 할 파일을 git 명령으로 추가하고 커밋해야 관리가 시작됨

repository [ 저장소 ]

 

$git add *.c

$git add read.txt

$git commit -m "first version" [저장] - 어떤 상태에 저장을 하는지 ? 바뀐것이 무엇이지? 일종의 꼬릿표

$git commit -am [설명] - add와 커밋이 동시에 가능

[master (root-commit) 해쉬값"너무 길어 앞 7자리만 표시"] "넣은 데이터"

 

2. 기존 저장소를 복사 [ clone ]하기 ( 서버 등 다른 컴퓨터 프로젝트 복사 )

- 서버 등 다른 컴퓨터의 프로젝트를 로컬 컴퓨터로 복사

- 기존 저장소를 복사해 올 디렉토리로 이동 후 다음 명령 실행

$git clone [url]  - userhome 디렉토리에서 다음 명령 실행

$git clone [url] 내가 원하는 이름 - 내가 원하는 디렉토리로 저장 할 수 있음

 

워킹 디렉토리의 반복 [ 깃은 이런식이구나 라고 이해해야한다. ]

출처 : DEV

 

 

출처 : overflow

$git log [ Git의 로그 내역을 볼 수 있다. ] 시간과 사용자 계정 해쉬값이 나온다 ]

 

 

용어 정리 한번 더 기억해보자

저장소 ( Repository )

- 프로젝트 현재 버전, 변경 이력등의 정보 저장하는 곳

가져오기 ( Import )

- 버전 관리되고 있지 않은 로컬 디렉토리의 파일 첫 저장소에 복사

체크 아웃 ( Check Out )

- 저장소 파일 가져옴

체크 인 ( Check In, commit )

- 체크아웃한 파일의 수정이 끝난 경우 저장소 새로운 버전 갱신 작업

- 갱신된 것이 있다면 충돌 알림, diff 도구 이용, commit 과정

 

 

브랜치 새로 만들기

$git branch [이름] - 브랜치를 이동시키면 포인터 HEAD는 [이름]을 지목

$git checkout [ 이름 ] -> $git status  표시된 내용을 보면 [이름]으로 변경됨

$git checkout master

$git branch [목록과 현재 어디있는지 표시한다]

$git branch -D [branch 명] 브랜치 삭제 (현재 브랜치 아닌 것만 삭제

$git branch -v 브랜치마다 마지막 커밋 메세지 출력

- master가 아닌 당시에 했던 내용들은 안보임

 

Merge