用網上鄰居向他人共享Git倉庫

有時候,須要把git倉庫(包括當前狀態和歷史記錄)共享給車間工友,而你和工友之間又不能經過git服務器進行交互時,網上鄰居共享便成爲了最原始也最有效的手段。那具體怎麼操做呢? html

  1. 打包整個目錄 git

    即把工做區和.git一塊兒打成一個壓縮包共享。解壓以後即造成徹底同樣的工做環境。
    毋庸置疑,這是最差的方式,不解釋。 服務器

  2. 打包.git目錄 網絡

    即只把.git目錄打成壓縮包共享。這樣解壓以後,去.git的同級目錄執行git checkout,便可生成整個工做區。
    這裏利用了git最重要的特性:.git目錄包含了全部信息。
    已經很好了,但並不完美。 fetch

  3. 直接共享.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

  4. 單中心P2P協做

    若是廠裏沒有git專用的服務器,而車間同事又想使用git,能夠將.git目錄開網上鄰居共享做爲服務器使用,固然這須要開讀寫共享並配置好權限。若是隻能開只讀共享,或者懶得配權限,也能夠採用下面的協做流程:

    • 選定一人在本地創建官方倉庫,開只讀共享

    • 其餘人克隆官方倉庫,開只讀共享

    • 採用Pull Request的方式提交代碼和彼此協做

    對於「Pull Request的方式」,小解釋一下: 若是你是官方倉庫維護人,直接提交代碼就能夠了。
    若是你不是官方倉庫維護人,又想把代碼提交到官方倉庫中,就須要先把代碼提交在一個本地分支上,而後向官方倉庫維護人發一個「Pull Request」。
    而後官方倉庫維護人收到「Pull Request」後,把你的倉庫加爲遠程,把分支取下來merge便可。
    做爲一個良好的習慣,在發「Pull Request」以前,先要把官方倉庫的最新更新取下來,而後本地分支作rebase操做,處理完衝突。

    這個「Pull Request」其實就是一個通知,在車間工做環境裏,發郵件或大吼一聲,都是有效的實現方法。 它不只能夠用於向官方倉庫提交代碼,也能夠更廣義地用於任意兩我的之間的代碼同步。

Related Posts

相關文章
相關標籤/搜索