您希望裸露的中央存储库。假设它所在的机器名为static
:
$ ssh static git init --bare /git/myproject.git
这个光秃秃的存储库是一个重要的集合点:用于推入和拉出而不是开发。
在中央存储库的克隆上进行开发:
$ cd ~/src
$ git clone static:/git/myproject.git
即使您在static
,也可以在克隆中工作:
$ git clone /git/myproject.git
尽管您是唯一在此存储库上工作的人,但要养成在git文档称为主题分支上进行工作的习惯。这样的直接好处是它保持了干净的母版,即您始终可以从中央母版分支拉入当前本地存储库的母版而无需合并。
例如:
$ git checkout -b fix-bug-in-foo
$ hack
$ git add file.c file.h
$ git commit -m "Fix ..."
这似乎没什么大不了,但是它使您可以自由地将分支上表示的项目保留为部分熟透的状态,或者如果您的绝妙主意是失败的,则可以轻松地放弃该分支而不必破坏项目中已经在其他分支上工作的任何其他内容。无限的免费民兵!
也许那天晚上您回家并添加了新功能。第二天早上,你
$ git checkout master
$ git pull
更新本地母版以反映中央存储库中的内容。
但现在说您已经修复了foo错误,并准备将其包含在master分支中。首先,您要将其与昨晚的更改集成在一起:
$ git checkout fix-bug-in-foo
$ git rebase master
该rebase
命令使您的存储库看起来就像您在昨晚的新功能之上修复了foo bug一样。(这有点像svn update
,但更加灵活和强大。)
现在将其放入您的中央主机中:
$ git checkout master
$ git merge fix-bug-in-foo
$ git push origin master
我们一直将master视为特殊,但这只是常规。您可以static
轻松地通过git存储库在不同存储库的不同分支上共享工作。