-
1. 시작하기
-
2. Git의 기초
- 2.1 Git 저장소 만들기
- 2.2 수정하고 저장소에 저장하기
- 2.3 커밋 히스토리 조회하기
- 2.4 되돌리기
- 2.5 리모트 저장소
- 2.6 태그
- 2.7 Git Alias
- 2.8 요약
-
3. Git 브랜치
-
4. Git 서버
- 4.1 프로토콜
- 4.2 서버에 Git 설치하기
- 4.3 SSH 공개키 만들기
- 4.4 서버 설정하기
- 4.5 Git 데몬
- 4.6 스마트 HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 또 다른 선택지, 호스팅
- 4.10 요약
-
5. 분산 환경에서의 Git
- 5.1 분산 환경에서의 워크플로
- 5.2 프로젝트에 기여하기
- 5.3 프로젝트 관리하기
- 5.4 요약
-
6. GitHub
- 6.1 계정 만들고 설정하기
- 6.2 GitHub 프로젝트에 기여하기
- 6.3 GitHub 프로젝트 관리하기
- 6.4 Organization 관리하기
- 6.5 GitHub 스크립팅
- 6.6 요약
-
7. Git 도구
- 7.1 리비전 조회하기
- 7.2 대화형 명령
- 7.3 Stashing과 Cleaning
- 7.4 내 작업에 서명하기
- 7.5 검색
- 7.6 히스토리 단장하기
- 7.7 Reset 명확히 알고 가기
- 7.8 고급 Merge
- 7.9 Rerere
- 7.10 Git으로 버그 찾기
- 7.11 서브모듈
- 7.12 Bundle
- 7.13 Replace
- 7.14 Credential 저장소
- 7.15 요약
-
8. Git맞춤
- 8.1 Git 설정하기
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 정책 구현하기
- 8.5 요약
-
9. Git과 여타 버전 관리 시스템
- 9.1 Git: 범용 Client
- 9.2 Git으로 옮기기
- 9.3 요약
-
10. Git의 내부
- 10.1 Plumbing 명령과 Porcelain 명령
- 10.2 Git 개체
- 10.3 Git Refs
- 10.4 Packfile
- 10.5 Refspec
- 10.6 데이터 전송 프로토콜
- 10.7 운영 및 데이터 복구
- 10.8 환경변수
- 10.9 요약
-
A1. 부록 A: 다양한 환경에서 Git 사용하기
- A1.1 GUI
- A1.2 Visual Studio
- A1.3 Eclipse
- A1.4 Bash
- A1.5 Zsh
- A1.6 Git in Powershell
- A1.7 요약
-
A2. 부록 B: 애플리케이션에 Git 넣기
-
A3. 부록 C: Git 명령어
- A3.1 설치와 설정
- A3.2 프로젝트 가져오기와 생성하기
- A3.3 스냅샷 다루기
- A3.4 Branch와 Merge
- A3.5 공유하고 업데이트하기
- A3.6 보기와 비교
- A3.7 Debugging
- A3.8 Patch 하기
- A3.9 Email
- A3.10 다른 버전 관리 시스템
- A3.11 관리
- A3.12 Plumbing 명령어
A3.5 부록 C: Git 명령어 - 공유하고 업데이트하기
공유하고 업데이트하기
Git에는 네트워크가 필요한 명령어가 많지 않다. 거의 로컬 데이터베이스만으로 동작한다. 코드를 공유하거나 가져올 때 필요한 명령어가 몇 개 있다. 이런 명령어는 모두 리모트 저장소를 다루는 명령어다.
git fetch
git fetch
명령은 로컬 데이터베이스에 있는 것을 뺀 리모트 저장소의 모든 것을 가져온다.
리모트 저장소를 Pull 하거나 Fetch 하기에서 이 명령을 설명하고 리모트 브랜치에 보면 참고할 수 있는 예제가 더 있다.
프로젝트에 기여하기에도 좋은 예제가 많다.
Ref를 한 개만 가져오는 방법은 Pull Request의 Ref에서 설명하고 번들에서 가져오는 방법은 Bundle에서 설명한다.
Fetch 하는 기본 Refspec을 수정하는 방법은in Refspec에서 설명한다. 원하는 대로 수정할 수 있다.
git pull
git pull
명령은 git fetch
와 git merge
명령을 순서대로 실행하는 것뿐이다. 그래서 해당 리모트에서 Fetch 하고 즉시 현 브랜치로 Merge를 시도한다.
리모트 저장소를 Pull 하거나 Fetch 하기에서 이 명령을 사용하는 방법을 다뤘고 정확히 무엇을 Merge 하는 지는 리모트 저장소 살펴보기에서 설명한다.
Rebase 한 것을 다시 Rebase 하기에서 그 어렵다는 Rebase를 다루는 방법을 설명한다.
저장소 URL을 주고 한 번만 Pull 해 올 수 있다는 것을 리모트 브랜치로부터 통합하기에서 설명한다.
--verify-signatures
옵션을 주면 Pull 할 때 커밋의 PGP 서명을 검증한다. PGP 서명은 커밋에 서명하기에서 설명한다.
git push
git push
명령은 리모트에는 없지만, 로컬에는 있는 커밋을 계산하고 나서 그 차이만큼만 Push 한다.
Push를 하려면 원격 저장소에 대한 쓰기 권한이 필요하고 인증돼야 한다.
리모트 저장소에 Push 하기에서 git push
명령으로
브랜치를 원격 저장소에 Push 하는 방법을 설명한다.
조금 깊게 브랜치를 하나씩 골라서 Push 하는 방법은 Push 하기에서 설명한다. 자동으로 Push 하도록 트래킹 브랜치를 설정하는 방법은 브랜치 추적에서 설명한다.
git push --delete
명령으로 원격 서버의 브랜치를 삭제하는 방법은 리모트 브랜치 삭제에서 설명한다.
프로젝트에 기여하기에서는 git push
를 주구장창 사용한다. 리모트를 여러 개 사용해서 브랜치에 작업한 내용을 공유하는 것을 보여준다.
--tags
옵션을 주고 태그를 Push 하는 방법은 태그 공유하기에서 설명한다.
서브모듈의 코드를 수정했을 때는 --recurse-submodules
옵션이 좋다. 프로젝트를 Push 할 때 서브모듈에 Push 할 게 있으면 서브모듈부터 Push 하므로 매우 편리하다. 이 옵션은 서브모듈 수정 사항 공유하기에서 설명한다.
기타 훅에서 pre-push
훅에 대해서 설명했다. 이 훅에 Push 해도 되는지 검증하는 스크립트를 설정하면 규칙에 따르도록 Push를 검증할 수 있다.
일반적인 이름 규칙에 따라서 Push 하는 것이 아니라 Refspec을 사용해서 원하는 이름으로 Push 하는 것도 가능하다. 이것은 Refspec Push 하기에서 설명한다.
git remote
git remote
명령은 원격 저장소 설정인 리모트의 관리 도구다.
긴 URL 대신 “origin” 처럼 이름을 짧게 지을 수 있다. 그리고 URL대신 짧은 리모트 이름을 사용한다.
git remote
명령으로 이 리모트를 여러 개 만들어 관리할 수 있다.
이 리모트를 조회하고 추가하고 삭제하고 수정하는 방법은 리모트 저장소에서 잘 설명한다.
이 명령은 git remote add <name> <url>
형식으로 사용하고 이 책에서 자주 사용된다.
git archive
git archive
명령은 프로젝트 스냅샷을 아카이브 파일로 만들어 준다.
릴리즈 준비하기에서 설명하는데 프로젝트를 Tarball로 만들어 공유할 때 사용한다.
git submodule
git submodule
명령은 저장소 안에서 다른 저장소를 관리하는 데 사용한다.
라이브러리나 특정 형식의 리소스 파일을 서브모듈로 사용할 수 있다.
submodule
명령에 있는 add
, update
, sync
등의 하위 명령어로 서브모듈을 관리할 수 있다.
이 명령은 서브모듈에서 설명한다.