이 글을 읽는 독자라면 Git을 읽는 데 몇 시간쯤은 기꺼이 투자할 사람일 테다. 독자의 시간은 중요하기에 먼저 몇 분 내로 이 책에 담긴 내용을 간단히 소개한다. 아래는 이 책에 담긴 10개의 장과 3개의 부록에 대해 간단히 정리한 내용이다.
1장에서는 기술적인 내용을 제외하고 버전 관리 시스템(VCS)과 Git이란게 대체 무엇인지, Git의 탄생 배경과, Git이 다른 VCS와 무엇이 다른지, 많은 사람들이 왜 Git을 사용하는지 대해서 알아본다. 이후 Git을 다운로드하고 설치하는 과정을 알아본다. 미리 Git이 설치돼 있는 시스템도 있다.
2장에서는 기본적인 Git 사용법을 알아본다. 80% 쯤은 이 장에서 설명하는 정도로만 Git을 사용한다. 2장을 읽고나면 저장소를 Clone 하기, 프로젝트 히스토리를 알아보기, 파일을 수정하고 프로젝트에 기여하기 등을 할 수 있다. 이 장만 찟어서 휴가를 즐기고 돌아와도 Git을 잘 사용할 수 있다.
3장에서는 Git의 브랜치 모델에 대해서 알아본다. 사람들은 브랜치가 Git의 핵심 기능이라고 말한다. Git 브랜치를 어떻게 활용하는지 배우면 다른 VCS와 어떻게 다른지 알게 된다. 3장을 읽고 나면 Git의 브랜치 없이 어떻게 살아왔는지 상상할 수 없게 될 것이다.
4장에서는 서버 환경에서의 Git에 대해 알아본다. Git으로 협업할 때 회사같은 특정 네트워크 안에서 사용할 Git 서버를 구축하거나 자신만의 Git 서버를 운영하고자 하는 사람에게 필요한 내용이다. 직접 Git 서버를 관리하지 않고 사용하는 여러 호스팅 서비스도 소개 한다.
5장에서는 다양한 분산환경에서의 워크플로에 대해 알아보고 Git으로 어떻게 워크플로를 달성하는지 알아본다. 5장을 읽고나면 여러 리모트 저장소를 두고 전문가처럼 작업할 수 있다. 이메일로도 Git 작업을 할 수 있고, 많은 수의 리모트 브랜치나 기여 받은 패치를 다룰 수 있다.
6장에서는 GitHub 호스팅 서비스와 GitHub에서 제공하는 도구를 자세히 알아본다. 가입하고 계정을 관리하는 방법부터 Git 저장소를 생성하고 다른 프로젝트에 기여하고 반대로 기여받는 워크플로를 살펴본다. GitHub이 제공하는 프로그래밍 가능한 인터페이스와 알아두면 피가되고 살이되는 팁도 소개한다.
7장에서는 Git의 고급 명령을 알아본다. 때로는 위험할 수도 있는 'Reset' 같은 명령에 도사가 되고, 버그를 찾기 위해 이진 탐색 기능을 사용하기도 한다. 히스토리를 수정하기도 하고 히스토리에서 세세하게 리비전을 선택해서 작업하는 등 다양한 고급 기능을 알아본다. 7장은 Git을 고급지게 구사하는 마스터로 만들어 줄 것이다.
8장에서는 Git 환경설정을 입맛에 맞게 조정하는 방법을 알아본다. 사용자가 원하는 정책을 만들어서 Git 환경에 적용시킬 수 있는 훅 스크립트를 설명한다. 원하는 대로 커밋 규칙을 세우고 이를 강제하도록 스크립트를 작성하는 예제도 소개한다.
9장에서는 Git과 다른 VCS를 함께 사용하는 환경에 대해 알아본다. Subversion 환경에서 Git을 클라이언트로 사용하는 방법이나 다른 VCS 프로젝트를 Git 프로젝트로 변경하는 방법을 알아본다. 아직도 많은 곳에서 바꿀 계획 없이 Subversion을 사용하고 있다. 9장을 통해 이런 Subversion 서버를 써야하는 환경에서도 Git이 제공하는 다양한 장점을 사용하는 법을 알게 된다. 다른 VCS 환경이나 프로젝트를 Git으로 변환하는 방법을 터득함으로써 동료에게 Git이 왜 좋은지 납득시키는 데 도움이 된다.
10장에서는 Git 안으로 깊숙히 파고든다. Git이 실제로 어떻게 동작하는지 이해하고 나면 아주 우아하고 강력하게 Git을 사용할 수 있게 된다. 이처럼 내부를 이해하고 나면 이제 데이터를 어떻게 다루는 것이 좋은지 객체를 다루는 모델로 무엇을 사용하는지 Packfile은 정확히 어떻게 이루어져 있는지 서버 프로토콜은 어떻게 이루어져있는지 논하는 경지에 이르게 된다. 책 곳곳에서 어떤 내용을 소개하다가 좀 더 깊은 이해가 필요한 부분에서는 10장을 보도록 안내하고 있다. 남들과는 다르게 Git의 은밀한 기술적인 구조를 이해하고 싶다면 다른 부분보다 여기 10장에 먼저 손이 갈 것이다.
부록 A에서는 다양한 환경에서 Git을 사용하는 예제를 살펴본다. 여러 GUI, 여러 IDE 환경에서 Git을 사용하려면 어떻게 해야 하는지 알아본다. Shell이나 Visual Studio, Eclipse 같은 환경에서 Git을 어떻게 쓰는지 훑어보려면 부록 A를 보면 된다.
부록 B에서는 Git을 스크립트로 사용하거나 libgit2나 JGit 같은 라이브러리로 기능을 확장해서 사용하는 방법을 알아본다. 맞춤 도구를 제작해서 사용을 해야한다거나 Git의 저수준 접근이 필요한 경우 부록 B를 살펴보면 어떻게 해야 할지 감을 잡을 수 있다.
마지막으로 부록 C에서는 주요 Git 명령을 한꺼번에 살펴보고 각 명령을 어디서 설명하고 있는지 안내하고 어떻게 사용했는지를 알려준다. 어떤 명령이 책의 어디에서 소개되었고 어떤 예제가 있는지 찾아볼 때 부록 C 가 유용하다.
자 이제 시작해봅시다.