Git의 기초
출처 : Scott Chacon, Ben Straub, 『Pro Git 2/E』, 박창우, 이성환, 최용재 옮김, 인사이트 출판사(1800), p22~34.1. 깃 저장소 만들기
- 기존 프로젝트나 디텍터리를 Git 저장소로 만드는 방법
- 다른 서버에 있는 저장소를 Clone하는 방법
기존 프로젝트를 Git으로 관리하고 싶을때?
$ git init
명령을 실행하여 .git 이라는 하위 디렉터리 생성
저장소에 필요한 뼈대 파일(sekeleton)이 들어 있음
Git이 파일을 관리하게 하려면 저장소에 파일을 추가하고 커밋해야 한다.
git add *.c # 파일을 추가하고git add LICENSEgit commit -m 'message' # 커밋
기존 저장소를 Clone하기
git clone [url] [dir_name]
다른 버전관리 툴과 차이점은 서버에 있는 거의 모든 데이터를 복사한다는 점
2. 수정하고 저장소에 저장하기
워킹 디렉터리의 모든 파일은 크게 Tracked(관리대상임)와 Untracked(관리대상이 아님)로 나눈다.
Tracked
이미 스냅샷에 포함돼 있던 파일로서 3가지 상태 중 하나이다.
- Unmodified(수정하지 않음)
- Modified(수정함)
- Staged(커밋으로 저장소에 기록할)
나머지 파일은 모두 Untracked 파일이다.
Untracked
워킹 디렉터리에 있는 파일 중 스냅샷에도 Staging Area에도 포함되지 않은 파일
처음 저장소에 Clone하면 모든 파일은 Tracked이면서 Unmodified상태이다.
파일을 Checkout하고 나서 아무것도 수정하지 않았기 때문에 그렇다.
마지막 커밋 이후 아직 아무것도 수정하지 않은 상태에서 어떤 파일을 수정하면 Git은 그 파일을 Modified 상태로 인식한다. 실제로 커밋을 하기 위해서는 이 수정한 파일을 Staged 상태로 만들고, Staged 상태의 파일을 커밋한다.
<사진 공간 - P19 파일의 라이프사이클>
파일의 상태 확인하기
$ git status> On branch master> nothing to commit, working directory clean
파일을 하나도 수정하지 않았다는 의미 => Tracked나 modified 상태인 파일이 없다는 의미
기본 브랜치가 master이기 때문에 현재 브랜치 이름이 'master'로 나온다.
README 파일 만들기
$ echo 'My Project' > README$ git statusOn branch masterUntracked files:(use "git add <file>..." to include in what will be committed)READMEnothing added to commit but untracked files present (use "git add" to track)
README 파일은 Untracked 상태
=> Git은 untracked 파일을 아직 스냅샷(커밋)에 넣어지지 않은 파일이라고 본다.
Git 파일이 Tracked 상태가 되기 전까지는 해당 파일을 커밋하지 않는다.
파일을 새로 추적하기
$ git add README$ git statusOn branch masterChanges to be committed:(use "git reset HEAD <file>..." to unstage)new file: README
Modified 상태의 파일을 Stage 하기
이미 Tracked 상태인 파일을 수정하는 법
"CONTRIBUTING.md"라는 파일을 수정하고 나서 git status 명령을 다시 실행
$ git statusOn branch masterChanges to be committed:(use "git reset HEAD <file>..." to unstage)new file: READMEChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified: CONTRIBUTING.md
파일 상태를 짤막하게 확인하기
$ git status -s또는$ git status --short
- ?? : 아직 추적하지 않는 새 파일
- A : Staged 상태로 추가한 파일 중 새로 생성한 파일
- M : 수정한 파일
- MM : 변경하고 Staged 상태로 추가한 후 또 내용을 변경한 경우