버전 만들기 (작업트리, 스테이지, 저장소) - git add, git commit
미리 말씀드립니다.
이 포스팅은 이고잉님의 '지옥에서 온 문서 관리자 깃 & 깃허브 입문' 책을 보고 정리한 내용입니다.
(이고잉 최고!)
http://www.yes24.com/Product/Goods/84803146
기본 용어 정리
* 작업트리(working tree)
- 혹은 작업 디렉터리(working directory)
- 실제로 파일의 수정, 저장 등의 작업을 하는 디렉터리(폴더)
* 스테이지(stage)
- 혹은 스테이징 영역(staging area)
- 버전으로 만들 파일이 대기하는 곳
- 작업 트리(디렉터리)에서 10개의 파일을 수정했는데 그 중 5개의 파일만 버전으로 만드려면 그 5개의 파일만 스테이지로 넘겨야 한다.
* 저장소(repository)
- 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳
* 작업 트리와 달리 스테이지와 저장소는 실제 눈으로 보이지 않는다.
초기화 했을 때(git init) 만들어지는 .git 디렉터리 안에 숨은 파일 형태로 존재한다.
* 스테이지의 내용은 .git/index 파일에 저장되고, 저장소의 내용은 .git/HEAD 파일에 저장된다.
버전을 만드는 순서를 정리해보면
작업 트리에서 문서를 생성/수정한다.
-> 생성/수정한 파일들 중 버전으로 만들고 싶은 파일(들)을 스테이지에 저장한다.
-> 스테이지로 옮겨간 파일을 저장소로 옮긴다.
이제 구체적으로 명령어와 함께 살펴보자.
0. 깃 상태 확인 - git status
git status 명령어를 확인해보면
On branch master : 현재 master 브랜치에 있다는 뜻.
Noting to commit : 커밋할 파일이 없다.
working tree clean : 워킹 트리도 깨끗하다. (변경 사항이 없다)
(no commits yet이라는 메시지는 아직 커밋한 파일이 없다는 뜻)
1. 파일 수정하기
워킹 트리에 index.html 파일을 만들고 Hello, World를 입력하고 저장했다.
그리고 나서 git status 명령을 치면
새로운 메시지가 더 떠있다!
On branch master
-> 일단 여전히 마스터 브랜치에 있다.
Untracked files는 아직 한 번도 버전 관리를 하지 않은 파일을 가리킨다.
untracked files가 있으니 다음 단계인 스테이징을 해라(git add <file>) 정도로 이해하면 된다.
2. 수정한 파일을 스테이징하기 - git add
작업 트리에서 파일을 만들거나 수정했다면 스테이지에 수정한 파일을 저장해야한다.
이 과정을 '스테이징' 혹은 '스테이지에 올린다'라고 표현한다.
git add index.html
git status를 입력해서 깃 상태를 확인해보면
여전히 마스터 브랜치에 있다.
그리고 Changes to be commited라는 말이 있다.
'(앞으로) 커밋을 할 수정사항들' 정도로 이해하면 될 것 같다.
new file: index.html은 index.html이 새로운 파일이다.라는 뜻
=> '새로운 파일 index.html을 앞으로 커밋할 것이다' 라는 뜻
+) 만약에 스테이지에 올린 파일을 다시 워킹 트리로 옮기고 싶다면 (언스테이징)
git restore --staged 파일이름
을 입력하라는 메시지도 중간에 있다.
3. 스테이징한 파일 커밋하기 - git commit
'버전을 만든다' = '커밋한다'로 이해하면 된다.
-m 옵션을 붙이면 커밋과 함께 저장할 메시지를 넣을 수 있다.
커밋을 할 때에는 스테이징과 달리 어떤 수정사항이 있었는지 메시지도 함께 적어주어야 한다.
(커밋 메시지는 한/영 모두 가능하지만 주로 영어로 작성한다.)
git commit -m "message message message"
나는 create a heading이라는 메시지와 함께 커밋을 했다. (새로운 버전을 만들었다!)
1 file changed, 12 insertions(+)
라는 메시지를 해석해보면
'한 개의 파일에서 수정 사항이 있었고 12줄이 추가되었다.' 라는 뜻이다.
다시 git status를 입력해보면
커밋할 것이 없고(새로운 버전을 만들 파일이 없고)
수정 사항 없이 워킹 트리가 깨끗하다는 메시지를 확인할 수 있다.
4. 만들어진 버전 확인하기 - git log
git log
지금까지 한 커밋들(버전들)에 대한 설명이 나온다.
커밋을 작성한 사람, 작성한 시간, 메시지등을 확인할 수 있다.
(나는 아까 했던 다른 커밋이 함께 떴다 ㅎㅎ)
추가)
스테이징과 커밋 한꺼번에 처리하기 - git commit -am
git commit -am "message message message"
혹은
git commit -a -m "message message message"
commit 명령에 -am 옵션을 추가하면 스테이징과 커밋을 한꺼번에 처리할 수 있다.
단! 한 번도 커밋한 적이 없는 파일은 안됨!
한 번이라도 커밋한 적이 있는 파일을 수정하여 다시 커밋할 때에만 사용할 수 있다!!!