用网上邻居向他人共享Git仓库

非 Y 不嫁゛ 提交于 2019-12-03 10:51:26

有时候,需要把git仓库(包括当前状态和历史记录)共享给车间工友,而你和工友之间又不能通过git服务器进行交互时,网上邻居共享便成为了最原始也最有效的手段。那具体怎么操作呢?

  1. 打包整个目录

    即把工作区和.git一起打成一个压缩包共享。解压之后即形成完全一样的工作环境。
    毋庸置疑,这是最差的方式,不解释。

  2. 打包.git目录

    即只把.git目录打成压缩包共享。这样解压之后,去.git的同级目录执行git checkout,即可生成整个工作区。
    这里利用了git最重要的特性:.git目录包含了所有信息。
    已经很好了,但并不完美。

  3. 直接共享.git目录

    这是正解。它与打包.git目录的区别在于:被共享的.git目录可以直接被用作远程仓库。
    也就是说,如果你的机器名是Machine,被共享的.git目录的共享名为Rep,则 //Machine/Rep 可以直接作为仓库URL来使用。

    (1) 克隆

    git clone //Machine/Rep <dir>

    (2) 在现有仓库中添加为远程仓库

    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目录在共享时开放了写权限。

  4. 单中心P2P协作

    如果厂里没有git专用的服务器,而车间同事又想使用git,可以将.git目录开网上邻居共享作为服务器使用,当然这需要开读写共享并配置好权限。如果只能开只读共享,或者懒得配权限,也可以采用下面的协作流程:

    • 选定一人在本地建立官方仓库,开只读共享

    • 其他人克隆官方仓库,开只读共享

    • 采用Pull Request的方式提交代码和彼此协作

    对于“Pull Request的方式”,小解释一下: 如果你是官方仓库维护人,直接提交代码就可以了。
    如果你不是官方仓库维护人,又想把代码提交到官方仓库中,就需要先把代码提交在一个本地分支上,然后向官方仓库维护人发一个“Pull Request”。
    然后官方仓库维护人收到“Pull Request”后,把你的仓库加为远程,把分支取下来merge即可。
    作为一个良好的习惯,在发“Pull Request”之前,先要把官方仓库的最新更新取下来,然后本地分支做rebase操作,处理完冲突。

    这个“Pull Request”其实就是一个通知,在车间工作环境里,发邮件或大吼一声,都是有效的实现方法。 它不仅可以用于向官方仓库提交代码,也可以更广义地用于任意两个人之间的代码同步。

Related Posts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!