-
1. 시작하기
-
2. Git의 기초
- 2.1 Git 저장소 만들기
- 2.2 수정하고 저장소에 저장하기
- 2.3 커밋 히스토리 조회하기
- 2.4 되돌리기(Undo)
- 2.5 리모트 저장소
- 2.6 Tag(Tag)
- 2.7 팁과 트릭
- 2.8 요약
-
3. Git 브랜치
- 3.1 브랜치란 무엇인가?
- 3.2 브랜치와 Merge의 기초
- 3.3 브랜치 관리
- 3.4 브랜치 Workflow
- 3.5 리모트 브랜치
- 3.6 Rebase하기
- 3.7 요약
-
4. Git 서버
- 4.1 프로토콜
- 4.2 서버에 Git 설치하기
- 4.3 SSH 공개키 만들기
- 4.4 서버 설정하기
- 4.5 공개하기
- 4.6 GitWeb
- 4.7 Gitosis
- 4.8 Gitolite
- 4.9 Git 데몬
- 4.10 Hosted Git
- 4.11 요약
-
5. 분산 환경에서의 Git
- 5.1 분산 환경에서의 Workflow
- 5.2 프로젝트에 기여하기
- 5.3 프로젝트 운영하기
- 5.4 요약
-
6. Git 도구
- 6.1 리비전 조회하기
- 6.2 대화형 명령어
- 6.3 Stashing
- 6.4 히스토리 단장하기
- 6.5 Git으로 버그 찾기
- 6.6 서브모듈
- 6.7 Subtree Merge
- 6.8 요약
-
7. Customizing Git
- 7.1 Git 설정하기
- 7.2 Git Attribute
- 7.3 Git 훅
- 7.4 정책 구현하기
- 7.5 요약
-
8. Git과 다른 VCS
- 8.1 Git과 Subversion
- 8.2 Git으로 옮기기
- 8.3 요약
-
9. Git의 내부구조
- 9.1 Plumbing 명령과 Porcelain 명령
- 9.2 Git 개체
- 9.3 Git 레퍼런스
- 9.4 Packfile
- 9.5 Refspec
- 9.6 데이터 전송 프로토콜
- 9.7 운영 및 데이터 복구
- 9.8 요약
3.3 Git 브랜치 - 브랜치 관리
브랜치 관리
지금까지 브랜치를 만들고, Merge하고, 삭제하는 방법에 대해서 살펴봤다. 브랜치를 관리하는 데 필요한 다른 명령들도 살펴보자.
git branch 명령은 단순히 브랜치를 만들고 삭제해 주기만 하는 것이 아니다. 아무런 옵션 없이 실행하면 브랜치의 목록을 보여준다:
$ git branch
iss53
* master
testing
* 기호가 붙어 있는 master브랜치는 현재 Checkout해서 작업하는 브랜치를 나타낸다. 즉, 지금 수정한 내용에 대해서 커밋하면 master 브랜치에 커밋되고 포인터가 앞으로 한 단계 나아간다. git branch -v 명령을 실행하면 각 브랜치에서 마지막 커밋 메시지도 함께 보여준다:
$ git branch -v
iss53 93b412c fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author list in the readmes
각 브랜치가 지금 어떤 상태인지 확인하기에 좋은 옵션들이 있다. 현재 Checkout한 브랜치를 기준으로 Merge된 브랜치인지 그렇지 않은지 필터링해 볼 수 있다. --merged와 --no-merged 옵션을 사용하여 해당 목록을 볼 수 있는데, Git 1.5.6 이후 버전부터 사용할 수 있다. git branch --merged 명령으로 이미 Merge한 브랜치 목록을 확인한다:
$ git branch --merged
iss53
* master
iss53 브랜치는 앞에서 이미 Merge했기 때문에 목록에 나타난다. * 기호가 붙어 있지 않은 브랜치는 git branch -d 명령으로 삭제해도 되는 브랜치다. 이미 다른 브랜치와 Merge 했기 때문에 삭제해도 정보를 잃지 않는다.
반대로 현재 Checkout한 브랜치에 Merge하지 않은 브랜치를 살펴보려면 git branch --no-merged 명령을 사용한다:
$ git branch --no-merged
testing
위에서 나타나지 않던 다른 브랜치가 보인다. 아직 Merge하지 않은 커밋을 담고 있기 때문에 git branch -d 명령으로 삭제되지 않는다:
$ git branch -d testing
error: The branch 'testing' is not an ancestor of your current HEAD.
If you are sure you want to delete it, run 'git branch -D testing'.
Merge하지 않은 브랜치를 강제로 삭제하려면 -D 옵션으로 삭제할 수 있다.