有时候,须要把git仓库(包括当前状态和历史记录)共享给车间工友,而你和工友之间又不能经过git服务器进行交互时,网上邻居共享便成为了最原始也最有效的手段。那具体怎么操做呢? html
打包整个目录 git
即把工做区和.git一块儿打成一个压缩包共享。解压以后即造成彻底同样的工做环境。
毋庸置疑,这是最差的方式,不解释。 服务器
打包.git目录 网络
即只把.git目录打成压缩包共享。这样解压以后,去.git的同级目录执行git checkout,便可生成整个工做区。
这里利用了git最重要的特性:.git目录包含了全部信息。
已经很好了,但并不完美。 fetch
直接共享.git目录 spa
这是正解。它与打包.git目录的区别在于:被共享的.git目录能够直接被用做远程仓库。
也就是说,若是你的机器名是Machine,被共享的.git目录的共享名为Rep,则 //Machine/Rep 能够直接做为仓库URL来使用。 .net
(1) 克隆 code
git clone //Machine/Rep <dir>
(2) 在现有仓库中添加为远程仓库 htm
git add <name> //Machine/Rep git fetch <name> git checkout master git merge <name>/master git push <name> master:mymaster
能够被添加为远程仓库,是直接共享.git目录的最大优点。因为git fetch会寻找双方共同的分支树(common commits),只更新不一样的部分,这样在两个git仓库源至同宗时,能大大减小网络传输。
上面的代码获取了远程的master分支,与本地master分支合并以后,再推送到远程的mymaster分支。
固然,最后一个操做(使用了git push)须要.git目录在共享时开放了写权限。 get
单中心P2P协做
若是厂里没有git专用的服务器,而车间同事又想使用git,能够将.git目录开网上邻居共享做为服务器使用,固然这须要开读写共享并配置好权限。若是只能开只读共享,或者懒得配权限,也能够采用下面的协做流程:
选定一人在本地创建官方仓库,开只读共享
其余人克隆官方仓库,开只读共享
采用Pull Request的方式提交代码和彼此协做
对于“Pull Request的方式”,小解释一下: 若是你是官方仓库维护人,直接提交代码就能够了。
若是你不是官方仓库维护人,又想把代码提交到官方仓库中,就须要先把代码提交在一个本地分支上,而后向官方仓库维护人发一个“Pull Request”。
而后官方仓库维护人收到“Pull Request”后,把你的仓库加为远程,把分支取下来merge便可。
做为一个良好的习惯,在发“Pull Request”以前,先要把官方仓库的最新更新取下来,而后本地分支作rebase操做,处理完冲突。
这个“Pull Request”其实就是一个通知,在车间工做环境里,发邮件或大吼一声,都是有效的实现方法。 它不只能够用于向官方仓库提交代码,也能够更广义地用于任意两我的之间的代码同步。