ebook img

Pro Git PDF

2013·4.1 MB·Korean
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Pro Git

Pro Git ScottChacon* 2014-11-28 *지금보시는문서는책「ProGit」의PDF파일입니다. 본문서는크리에이티브커먼즈저작자표시-비영 리-동일조건변경허락3.0(CreativeCommonsAttribution-NonCommercial-ShareAlike3.0)조건에 따라이용할수있습니다. 이책을통해Git을즐겁게배울수있기를바랍니다. 출판된책을Amazon웹사이 트http://tinyurl.com/amazonprogit에서구입하시면원저자인ScottChacon과Apress출판사에게큰도움이됩 니다. 도서출판인사이트를통해서한국어판이2013년4월19일에출판되었습니다.한국어번역에대한자세한정보는 https://github.com/progit/progit/tree/master/ko에서확인해주세요. 목차 1 시작하기 1 1.1 버전관리란? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 로컬버전관리시스템 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 중앙집중식버전관리시스템 . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.3 분산버전관리시스템 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 짧게보는Git의역사 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Git기초 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 델타가아니라스냅샷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.2 거의모든명령을로컬에서실행 . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.3 Git의무결성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.4 Git은데이터를추가할뿐 . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.5 세가지상태. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Git설치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.1 소스코드로설치하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.2 리눅스에설치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.3 Mac에설치하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.4 윈도에설치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Git최초설정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 사용자정보 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 편집기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3 Diff도구 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.4 설정확인 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6 도움말보기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.7 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Git의기초 13 2.1 Git저장소만들기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 기존디렉토리를Git저장소로만들기 . . . . . . . . . . . . . . . . . . . . 13 2.1.2 기존저장소를Clone하기 . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2 수정하고저장소에저장하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.1 파일의상태확인하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.2 파일을새로추적하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.3 Modified상태의파일을Stage하기. . . . . . . . . . . . . . . . . . . . . 16 2.2.4 파일무시하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.5 Staged와Unstaged상태의변경내용을보기 . . . . . . . . . . . . . . . 19 2.2.6 변경사항커밋하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 iii 2.2.7 StagingArea생략하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.8 파일을삭제하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.9 파일이름변경하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3 커밋히스토리조회하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3.1 조회제한조건 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3.2 GUI도구로히스토리를시각화하기 . . . . . . . . . . . . . . . . . . . . . 31 2.4 되돌리기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.4.1 커밋수정하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.4.2 파일상태를Unstage로변경하기 . . . . . . . . . . . . . . . . . . . . . . 33 2.4.3 Modified파일되돌리기 . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.5 리모트저장소 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5.1 리모트저장소확인하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5.2 리모트저장소추가하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5.3 리모트저장소를Pull하거나Fetch하기 . . . . . . . . . . . . . . . . . . . 36 2.5.4 리모트저장소에Push하기 . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.5.5 리모트저장소살펴보기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5.6 리모트저장소이름을바꾸거나리모트저장소를삭제하기 . . . . . . . . . . 38 2.6 태그 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.6.1 태그조회하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.6.2 태그붙이기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.6.3 Annotated태그 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.6.4 태그에서명하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.6.5 Lightweight태그 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.6.6 태그검증하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.6.7 나중에태그하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.6.8 태그공유하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.7 팁과트릭 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.7.1 자동완성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.7.2 GitAlias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.8 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3 Git브랜치 47 3.1 브랜치란무엇인가? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.2 브랜치와Merge의기초 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2.1 브랜치의기초 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.2.2 Merge의기초 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.2.3 충돌의기초 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.3 브랜치관리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.4 브랜치Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.4.1 Long-Running브랜치 . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.4.2 토픽브랜치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.5 리모트브랜치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.5.1 Push하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.5.2 브랜치추적 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.5.3 리모트브랜치삭제 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.6 Rebase하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 iv 3.6.1 Rebase의기초 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.6.2 좀더Rebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.6.3 Rebase의위험성 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.7 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4 Git서버 75 4.1 프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.1.1 로컬프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 장점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 단점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.1.2 SSH프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 장점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 단점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.1.3 Git프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 장점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 단점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.1.4 HTTP/S프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 장점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 단점 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.2 서버에Git설치하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.2.1 서버에Bare저장소넣기 . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.2.2 바로설정하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 SSH접근 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.3 SSH공개키만들기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.4 서버에설정하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.5 공개하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.6 GitWeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.7 Gitosis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.8 Gitolite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.8.1 설치하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.8.2 자신에게맞게설치하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.8.3 설정파일과접근제어규칙. . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.8.4 “deny”규칙을꼼꼼하게제어하기 . . . . . . . . . . . . . . . . . . . . . . 94 4.8.5 파일단위로Push를제어하기 . . . . . . . . . . . . . . . . . . . . . . . . 94 4.8.6 Personal브랜치 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.8.7 “와일드카드”저장소 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.8.8 그밖의기능들 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.9 Git데몬 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.10HostedGit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.10.1GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.10.2계정설정하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.10.3저장소만들기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.10.4Subversion으로부터코드가져오기(Import) . . . . . . . . . . . . . . . . 101 4.10.5동료추가하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.10.6내프로젝트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.10.7프로젝트Fork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 v 4.10.8GitHub요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.11요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5 분산환경에서의Git 105 5.1 분산환경에서의Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.1.1 중앙집중식Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.1.2 Integration-ManagerWorkflow . . . . . . . . . . . . . . . . . . . . . 106 5.1.3 DictatorandLieutenantsWorkflow . . . . . . . . . . . . . . . . . . . 107 5.2 프로젝트에기여하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.2.1 커밋가이드라인 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.2.2 비공개소규모팀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.2.3 비공개대규모팀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.2.4 공개소규모팀 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 5.2.5 대규모공개프로젝트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.2.6 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.3 프로젝트운영하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.3.1 토픽브랜치에서일하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.3.2 이메일로받은Patch를적용하기 . . . . . . . . . . . . . . . . . . . . . . 126 apply명령을사용하는방법 . . . . . . . . . . . . . . . . . . . . . . . . . 127 am명령을사용하는방법 . . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.3.3 리모트브랜치로부터통합하기 . . . . . . . . . . . . . . . . . . . . . . . . 130 5.3.4 무슨내용인지확인하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.3.5 기여물통합하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 MergeWorkflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 대규모MergeWorkflow . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Rebase와Cherry-PickWorkflow. . . . . . . . . . . . . . . . . . . . . 135 5.3.6 릴리즈버전에태그달기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.3.7 빌드넘버만들기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.3.8 릴리즈준비하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.3.9 Shortlog보기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.4 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6 Git도구 139 6.1 리비전조회하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 6.1.1 리비전하나가리키기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 6.1.2 짧은SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 6.1.3 SHA-1해시값에대한단상 . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.1.4 브랜치로가리키기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.1.5 RefLog로가리키기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.1.6 계통관계로가리키기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 6.1.7 범위로커밋가리키기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 DoubleDot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 세개이상의레퍼런스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 TripleDot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.2 대화형명령어 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 6.2.1 StagingArea에파일추가하고추가취소하기 . . . . . . . . . . . . . . . . 147 vi 6.2.2 파일의일부분만StagingArea에추가하기 . . . . . . . . . . . . . . . . . 149 6.3 Stashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 6.3.1 하던일을Stash하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 6.3.2 Stash되돌리기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.3.3 Stash를적용한브랜치만들기. . . . . . . . . . . . . . . . . . . . . . . . 153 6.4 히스토리단장하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 6.4.1 마지막커밋을수정하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 6.4.2 커밋메시지를여러개수정하기 . . . . . . . . . . . . . . . . . . . . . . . 154 6.4.3 커밋순서바꾸기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.4.4 커밋합치기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 6.4.5 커밋분리하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 6.4.6 filter-branch는포크레인 . . . . . . . . . . . . . . . . . . . . . . . . . 159 모든커밋에서파일을제거하기 . . . . . . . . . . . . . . . . . . . . . . . 159 하위디렉토리를루트디렉토리로만들기 . . . . . . . . . . . . . . . . . . . 160 모든커밋의이메일주소를수정하기 . . . . . . . . . . . . . . . . . . . . . 160 6.5 Git으로버그찾기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 6.5.1 파일어노테이션 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 6.5.2 이진탐색 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 6.6 서브모듈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 6.6.1 서브모듈시작하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 6.6.2 서브모듈이있는프로젝트Clone하기 . . . . . . . . . . . . . . . . . . . . 166 6.6.3 슈퍼프로젝트 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 6.6.4 서브모듈사용할때주의할점들 . . . . . . . . . . . . . . . . . . . . . . . 168 6.7 SubtreeMerge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 6.8 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 7 Git맞춤 173 7.1 Git설정하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.1.1 클라이언트설정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 core.editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 commit.template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 core.pager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 user.signingkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 core.excludesfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 help.autocorrect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 7.1.2 컬러터미널 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 color.ui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 color.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 7.1.3 다른Merge,Diff도구사용하기. . . . . . . . . . . . . . . . . . . . . . . 177 7.1.4 소스포맷과공백 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 core.autocrlf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 core.whitespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 7.1.5 서버설정 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 receive.fsckObjects. . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 receive.denyNonFastForwards . . . . . . . . . . . . . . . . . . . . . 181 receive.denyDeletes . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 vii 7.2 GitAttribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 7.2.1 바이너리파일 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 바이너리파일이라고알려주기 . . . . . . . . . . . . . . . . . . . . . . . . 182 바이너리파일Diff하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 MSWord파일 . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 OpenDocument파일 . . . . . . . . . . . . . . . . . . . . . . . 184 이미지파일 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 7.2.2 키워드치환 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 7.2.3 저장소익스포트하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 export-ignore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 export-subst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 7.2.4 Merge전략. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 7.3 Git훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 7.3.1 훅설치하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 7.3.2 클라이언트훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 커밋Workflow훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 E-mailWorkflow훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 기타훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 7.3.3 서버훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 pre-receive와post-receive . . . . . . . . . . . . . . . . . . . . . . . 191 update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.4 정책구현하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.4.1 서버훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 커밋메시지규칙만들기 . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 ACL로사용자마다다른규칙적용하기 . . . . . . . . . . . . . . . . . . . . 194 Fast-ForwardPush만허용하기 . . . . . . . . . . . . . . . . . . . . . . 196 7.4.2 클라이언트훅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.5 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 8 Git으로이전하기 203 8.1 Git과Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 8.1.1 gitsvn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 8.1.2 설정하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 8.1.3 시작하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 8.1.4 Subversion서버에커밋하기 . . . . . . . . . . . . . . . . . . . . . . . . 206 8.1.5 새로운변경사항받아오기 . . . . . . . . . . . . . . . . . . . . . . . . . . 207 8.1.6 Git브랜치문제 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 8.1.7 Subversion의브랜치. . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 SVN브랜치만들기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 8.1.8 Subversion브랜치넘나들기 . . . . . . . . . . . . . . . . . . . . . . . . 210 8.1.9 Subversion명령 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 SVN형식의히스토리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 SVN어노테이션 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 SVN서버정보 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Subversion에서무시하는것무시하기 . . . . . . . . . . . . . . . . . . . 212 8.1.10Git-Svn요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 viii 8.2 Git으로옮기기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 8.2.1 가져오기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 8.2.2 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 8.2.3 Perforce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 8.2.4 직접Importer만들기. . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 8.3 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 9 Git의내부 225 9.1 Plumbing명령과Porcelain명령 . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.2 Git개체 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.2.1 Tree개체 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.2.2 커밋개체 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 9.2.3 개체저장소 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 9.3 Git레퍼런스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 9.3.1 HEAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 9.3.2 태그 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 9.3.3 리모트레퍼런스 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 9.4 Packfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 9.5 Refspec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 9.5.1 RefspecPush하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 9.5.2 레퍼런스삭제하기 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 9.6 데이터전송프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 9.6.1 Dumb프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 9.6.2 스마트프로토콜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 데이터업로드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247 데이터다운로드 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 9.7 운영및데이터복구 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 9.7.1 운영 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 9.7.2 데이터복구 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 9.7.3 개체삭제 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.8 요약 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 ix

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.