중앙 저장소가 노출되기를 원합니다. 그것이 살고있는 기계의 이름이 static
다음과 같이 말하십시오 .
$ ssh static git init --bare /git/myproject.git
이 베어 리포지토리는 중심의 약속 장소입니다. 개발이 아닌 추진을위한 것입니다.
중앙 저장소의 복제본에서 개발하십시오.
$ cd ~/src
$ git clone static:/git/myproject.git
에 있더라도 static
복제본에서 작업하십시오.
$ git clone /git/myproject.git
이 저장소에서 작업하는 유일한 사람이지만 git documentation이 주제 분기 라는 작업을 수행하는 습관을 가지십시오 . 이것의 즉각적인 이점은 깨끗한 마스터를 유지한다는 것입니다. 즉 , 중앙 마스터 브랜치에서 병합하지 않고 항상 현재 로컬 리포지토리의 마스터로 가져올 수 있습니다.
예를 들면 다음과 같습니다.
$ git checkout -b fix-bug-in-foo
$ hack
$ git add file.c file.h
$ git commit -m "Fix ..."
그것은 큰 일처럼 보이지 않을 수도 있지만 , 부분적으로 요리 된 상태에서 해당 지점 에 표시된대로 프로젝트 를 자유롭게 떠날 수 있습니다. 이미 다른 지사에서 작업중 인 프로젝트의 다른 것을 깨는 것. 무한 무료 멀리건!
그날 밤 집에 가서 새로운 기능을 추가했을 수도 있습니다. 다음날 아침
$ git checkout master
$ git pull
중앙 리포지토리에있는 내용을 반영하도록 로컬 마스터를 업데이트합니다.
그러나 이제 foo 버그를 수정하여 마스터 브랜치에 포함 할 준비가되었다고 가정 해보십시오. 먼저 지난 밤의 변경 사항과 통합하려고합니다.
$ git checkout fix-bug-in-foo
$ git rebase master
이 rebase
명령은 어젯밤의 새로운 기능 위에 foo 버그를 수정 한 것처럼 리포지토리를 표시합니다. (이것은 일종의 비슷 svn update
하지만 더 유연하고 강력합니다.)
이제 중앙 마스터로 가져 오십시오.
$ git checkout master
$ git merge fix-bug-in-foo
$ git push origin master
우리는 마스터를 특별하게 취급 해 왔지만 그것은 단지 종래의 것입니다. git 리포지토리를 통해 다른 리포지토리의 서로 다른 브랜치에서 작업을 쉽게 공유 할 수 static
있습니다.