이 책은 현재 절판입니다. 그간 읽어주신 독자들께 감사드립니다.
전략적 백업과 협업 워크플로를 위한 최고의 도구!
git에 관한 튜토리얼부터 예제, 레퍼런스까지 한 권에!
출판사 제이펍
원출판사 O’Reilly
원서명 Version Control with Git: Powerful tools and techniques for collaborative software development(2/e) (원서 ISBN: 9781449316389)
저자명 존 롤리거, 매튜 맥컬러프 지음
역자명 윤순백
출판일 2013년 11월 30일
페이지 552쪽
판 형 46배판 변형(188*245), 반양장(soft cover)
정 가 30,000원
ISBN 978-89-94506-81-4 (93000)
키워드 협업 / 버전 관리 시스템 / 백업 / SVN / GitHub / 저장소 / 오픈 소스
분야 프로그래밍 / 기타
관련 사이트
■ 원출판사 도서소개 페이지
■ 아마존 도서소개 페이지
■ 역자 Q&A 메일(soonbaek골뱅이empas.com)
관련 포스트
■ 2013/11/22 - [출간전 책소식] - 진정한 Git 레퍼런스!
관련 시리즈
■ (없음)
소스 코드 다운로드
■ (없음)
강의 자료
■ 교재로 채택하신 분들에게는 강의교안을 제작할 수 있는 자료를 보내드리도록 하겠습니다(출판사로 메일이나 전화로 연락주세요).
관련 도서
■ 협업의 기술: 소프트웨어 괴짜들을 움직이는 세 가지 법칙
■ 좋은 코드를 작성하는 기술: 읽기 쉽고 유지보수가 쉬운 프로그래밍 작성법
샘플 PDF (차례, 옮긴이 머리말, 이 책에 대하여, 1장 소개, 2장 Git 설치하기, 3장 시작하기, 찾아보기)
분산버전관리Git사용설명서(제2판)_sample.pdf
분산버전관리Git사용설명서(제2판)_index.pdf
정오표 페이지
■ (등록되는 대로 링크를 걸어드리겠습니다)
도서구매 사이트 (가나다순)
도서 소개
전략적 백업과 협업 워크플로를 위한 최고의 도구!
git에 관한 튜토리얼부터 예제, 레퍼런스까지 한 권에!
Git을 통해 코드 개정판을 추적, 분기, 병합 및 관리하는 방법에 대해 설명하는 이 실전 가이드에서는 단계별로 구성된 튜토리얼을 통해 Git의 기초부터 고급 기술까지 친절하게 안내할 뿐만 아니라 오픈 소스 버전 관리 시스템인 Git의 다양한 기능에 대해서도 소개하고 있다.
또한, 새롭게 개정된 2판에는 트리 조작을 위한 팁, reflog와 stash에 관한 자세한 설명, 그리고 GitHub 저장소에 대한 소개도 포함되어 있다. 시스템의 유연성을 활용하는 방법만 이해하고 있다면, Git을 통해 아주 다양한 방법으로 코드 개발 프로세스를 손쉽게 관리할 수 있다.
이 책에서 다루는 주요 주제는 다음과 같다.
■ 여러 가지 실제 개발 시나리오를 바탕으로 진행되는 Git 사용법
■ Git의 일반적인 사용 사례와 초기 작업 및 기본 기능
■ 중앙 집중식 버전 관리와 분산 버전 관리
■ 병합, 충돌, 패치 및 차이점을 관리하는 방법
■ 리베이스나 후크 같은 고급 기술을 적용하고, 하위 모듈을 관리하는 방법
■ SVN 저장소를 사용하는 방법과 SVN을 Git으로 변환하는 방법
■ GitHub를 통해 오픈 소스 프로젝트를 탐색 및 사용하는 방법과 오픈 소스 프로젝트에 기여하는 방법
저자 소개
존 롤리거(Jon Loeliger)
존 롤리거는 Git, Linux 및 U-Boot 등의 다양한 오픈 소스 프로젝트에 참여하고 있는 프리랜서 소프트웨어 엔지니어로서 Linux World 같은 여러 컨퍼런스에서 Git 튜토리얼을 소개하고, Linux Magazine에 Git과 관련된 여러 편의 글을 기고하고 있다. 그는 퍼듀대학교에서 컴퓨터 과학을 전공했으며, 여러 해 동안 최적화 컴파일러, 라우터 프로토콜, 리눅스 포팅 및 간단한 게임을 개발한 경력도 있다. 여유가 있을 때는 취미로 와인을 만들기도 한다.
매튜 맥컬러프(Matthew McCullough)
Training for GitHub.com의 부사장인 매튜 맥컬러프는 15년 경력의 엔터프라이즈 소프트웨어 개발자이며, 세계 여러 나라를 돌아다니면서 오픈 소스 교육 전문가로 활동하고 있다. US consultancy의 공동 설립자인 그는 Git과 GitHub와 관련된 자신의 성공 사례를 많은 사람들과 공유하고 있다.
역자 소개
윤순백
아주대학교에서 정보 및 컴퓨터 공학을 전공하였고, (주)프로랭스에서 3년 동안 소프트웨어 현지화 전문가로 활동했다. 이후 IT 분야 전문 프리랜서 번역가로 활발하게 활동하고 있다. 대표적인 번역물로 오픈 소스 개발자를 위한 사이트인 IBM developerWorks의 수백 편의 아티클과 수십 편의 튜토리얼이 있다. 옮긴 책으로는 《스케치로 시작하는 아두이노 프로그래밍》, 《레시피로 배우는 아두이노 쿡북(제2판)》, 《렛츠 고! 플렉스 프로그래밍》이 있다.
차례
CHAPTER 1 소개
배경 1
Git의 탄생 2
전례 5
타임라인 7
이름의 의미 8
CHAPTER 2 Git 설치하기
리눅스 바이너리 배포판 사용하기 9
데비안/우분투 9
기타 바이너리 배포판 11
소스 릴리스 얻기 12
빌드와 설치 13
윈도우즈에서 Git 설치하기 15
시그윈 Git 패키지 설치하기 15
독립형 Git 설치하기 17
더보기 접기
CHAPTER 3 시작하기
Git 명령행 21
간단한 Git 사용법 24
첫 저장소 만들기 24
저장소에 파일 추가하기 25
커밋 작성자 구성하기 27
또 다른 커밋하기 27
커밋 보기 28
커밋 차이점 보기 30
저장소에 있는 파일을 제거하고 이름 바꾸기 31
저장소 복사본 만들기 32
구성 파일 33
별칭 구성하기 35
질문 36
CHAPTER 4 Git의 기본 개념
기본 개념 37
저장소 37
Git 객체 유형 38
인덱스 39
콘텐츠 주소화 이름 40
Git은 콘텐츠를 추적한다 40
경로 이름과 콘텐츠 42
팩 파일 43
객체 저장소 그림 44
주요 Git 개념 46
.git 디렉터리 내부 46
객체, 해시 및 blob 48
파일과 트리 49
Git에서의 SHA1 사용 50
트리 계층 구조 52
커밋 53
태그 55
CHAPTER 5 파일 관리와 인덱스
인덱스의 모든 것 58
Git의 파일 분류 59
git add 사용하기 61
git commit 명령 사용하기 64
git commit --all 사용하기 64
커밋 로그 메시지 작성하기 66
git rm 사용하기 66
git mv 사용하기 69
이름 변경 추적하기 71
.gitignore 파일 72
Git의 객체 모델과 파일에 대한 자세한 설명 74
CHAPTER 6 커밋
원자적 변경 세트 80
커밋 식별하기 81
절대적 커밋 이름 82
참조와 심볼릭 참조 83
상대적 커밋 이름 85
커밋 히스토리 87
기존 커밋 보기 87
커밋 그래프 90
커밋 범위 95
커밋 찾기 100
git bisect 사용하기 100
git blame 사용하기 106
Pickaxe 사용하기 107
CHAPTER 7 브랜치
브랜치를 사용하는 이유 109
브랜치 이름 111
브랜치 이름의 규칙 111
브랜치 사용하기 112
브랜치 만들기 114
브랜치 이름 나열하기 115
브랜치 보기 116
브랜치 체크아웃하기 119
브랜치 체크아웃에 대한 기본 예제 119
커밋되지 않은 변경 사항이 있는 상황에서의 체크아웃 120
변경 사항을 다른 브랜치로 병합하기 122
새 브랜치를 만들고 체크아웃하기 124
독립된 HEAD 브랜치 125
브랜치 삭제하기 127
CHAPTER 8 Diff
git diff 명령의 형식 133
간단한 git diff 예제 137
git diff와 커밋 범위 141
git diff에서 경로 제한하기 144
서브버전과 Git의 차이점 검색 방법 비교 147
CHAPTER 9 병합
병합 예제 150
병합 준비하기 150
두 브랜치 병합하기 150
충돌이 있는 병합 153
병합 충돌 처리하기 158
충돌이 발생한 파일 찾기 159
충돌 조사하기 160
Git에서 충돌을 추적하는 방법 165
충돌 해결 마무리하기 167
병합 취소 또는 다시 시작하기 169
병합 전략 170
퇴화 병합 173
일반 병합 175
특수 병합 177
병합 전략 적용하기 177
병합 드라이버 179
Git 병합의 특징 180
병합과 Git의 객체 모델 180
스쿼시 병합 182
변경 사항을 하나씩 병합하지 않는 이유 183
CHAPTER 10 커밋 수정하기
히스토리 수정과 관련된 주의 사항 187
git reset 사용하기 188
git cherry-pick 사용하기 198
git revert 사용하기 200
reset, revert 및 checkout 201
최상위 커밋 변경하기 203
커밋 리베이스하기 206
git rebase -i 사용하기 209
리베이스 VS 병합 214
CHAPTER 11 Stash와 Reflog
Stash 221
Reflog 232
CHAPTER 12 원격 저장소
저장소 개념 240
베어 및 개발 저장소 240
저장소 복제 242
원격 저장소 243
브랜치 추적하기 244
다른 저장소 참조하기 245
원격 저장소 참조하기 246
refspec 248
원격 저장소 사용 예제 251
권한이 있는 저장소 만들기 251
고유한 원본 리모트 만들기 253
로컬 저장소에서 개발하기 256
변경 사항 푸시하기 256
새 개발자 추가하기 258
저장소 업데이트 가져오기 260
그림으로 보는 원격 저장소 개발 주기 266
저장소 복제하기 266
대체 히스토리 268
논패스트포워드 푸시 269
대체 히스토리 가져오기 270
히스토리 병합하기 271
병합 충돌 272
병합된 히스토리 넣기 273
원격 구성 274
git remote 사용하기 274
git config 사용하기 276
수동 편집 사용하기 277
추적 브랜치 작업하기 277
추적 브랜치 만들기 277
전후 관계 281
원격 브랜치 추가 및 삭제하기 282
베어 저장소와 git push 284
CHAPTER 13 저장소 관리
서버의 의미 287
저장소 게시하기 288
액세스 권한 제한이 있는 저장소 289
익명 읽기 권한이 있는 저장소 290
익명 쓰기 권한이 있는 저장소 295
GitHub에 저장소 게시하기 295
저장소 게시에 관한 조언 297
저장소 구조 298
공유 저장소 구조 298
분산 저장소 구조 299
저장소 구조 예제 300
분산 개발 환경의 특성 303
공용 히스토리 변경하기 303
분리된 커밋 및 게시 단계 304
분산 환경에서의 진짜 히스토리 304
위치 파악하기 306
업스트림과 다운스트림 306
관리자와 개발자의 역할 307
관리자와 개발자의 상호 작용 308
역할 이중성 309
여러 저장소 이용하기 311
사용자의 작업 공간 311
시작 위치 선택 311
다른 업스트림 저장소로 변환하기 312
여러 업스트림 저장소 사용하기 314
프로젝트 포크하기 317
CHAPTER 14 패치
왜 패치를 사용해야 하는가? 322
패치 생성하기 323
패치와 위상 정렬 333
패치 이메일 보내기 334
패치 적용하기 337
나쁜 패치 346
패치와 병합 비교 346
CHAPTER 15 후크
후크 설치하기 349
예제 후크 350
첫 번째 후크 만들기 351
사용 가능한 후크 354
커밋 관련 후크 354
패치 관련 후크 355
푸시 관련 후크 356
기타 로컬 저장소 후크 358
CHAPTER 16 프로젝트 결합하기
기존 해결책: 부분 체크아웃 360
확실한 해결책: 사용자의 프로젝트로 코드 가져오기 362
복사를 통해 하위 프로젝트 가져오기 364
git pull -s subtree 명령으로 하위 프로젝트 가져오기 364
업스트림에 변경 사항 제출하기 370
자동화된 해결책: 사용자 정의 스크립트로 하위 프로젝트 체크아웃하기 370
네이티브 해결책: gitlinks와 git submodule 372
Gitlink 373
git submodule 명령 376
CHAPTER 17 하위 모듈 모범 사례
Submodule 명령 382
하위 모듈을 사용하는 이유 383
하위 모듈 준비 384
왜 읽기 전용인가? 385
왜 읽기 전용이 아닌가? 386
하위 모듈 커밋의 해시 조사하기 386
자격 증명 재사용 387
유스 케이스 388
저장소의 다중 중첩 389
하위 모듈에 대한 전망 389
CHAPTER 18 SVN 저장소와 함께 Git 사용하기
예제: 간단한 단일 브랜치 복제본 391
Git에서 변경 사항 적용하기 395
커밋 전에 가져오기 396
git svn rebase를 통해 커밋하기 398
git svn 명령을 이용한 푸시, 풀, 분기 및 병합 399
커밋 ID를 선형으로 유지하기 400
모든 브랜치 복제하기 402
저장소 공유하기 404
SVN에 다시 병합하기 406
SVN 작업에 관한 기타 사항 408
svn:ignore와 .gitignore 비교 408
git-svn 캐시 재생성하기 408
CHAPTER 19 고급 작업
git filter-branch 사용하기 411
git filter-branch 사용 예제 414
filter-branch 적용 범위 421
사랑스러운 git rev-list 421
날짜 기반 체크아웃 422
파일의 구버전 가져오기 425
대화식 헝크 스테이징 428
손실된 커밋 복구하기 441
git fsck 명령 441
손실된 커밋 다시 연결하기 446
CHAPTER 20 여러 가지 팁과 기술
어지러운 작업 디렉터리에 대한 대화식 리베이스 449
필요 없는 편집기 파일 제거하기 451
가비지 컬렉션 451
저장소 분리하기 453
커밋 복구를 위한 팁 454
서브버전 변환 팁 455
일반적인 조언 455
SVN 가져오기 후 트렁크 제거하기 456
SVN 커밋 ID 제거하기 457
두 저장소의 브랜치 조작하기 458
업스트림 리베이스에서 복구하기 458
고유한 Git 명령 만들기 460
변경 사항에 대한 빠른 개요 461
정리하기 462
git-grep 명령으로 저장소 검색하기 463
참조 업데이트 및 삭제 465
옮겨진 파일 따라가기 466
현재 파일을 추적하지 않고 유지하기 467
반복되는 작업의 자동화 468
CHAPTER 21 Git과 GitHub
공용 코드를 위한 저장소 472
GitHub 저장소 만들기 475
오픈 소스의 소셜 코딩 477
와처 478
뉴스 피드 479
포크 480
풀 요청 생성하기 482
풀 요청 관리하기 484
통지 487
사용자, 프로젝트 및 코드 찾기 490
위키 491
GitHub 페이지(웹 사이트용 Git) 492
인페이지 코드 편집기 495
서브버전 브리지 496
아카이브로 자동 전환되는 태그 498
조직 499
REST API 500
폐쇄적 조직에서의 소셜 코딩 502
최종 단계에서의 오픈 소싱 502
코딩 모델 503
GitHub 엔터프라이즈 506
GitHub 요약 507
접기