有時候,須要把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」其實就是一個通知,在車間工做環境裏,發郵件或大吼一聲,都是有效的實現方法。 它不只能夠用於向官方倉庫提交代碼,也能夠更廣義地用於任意兩我的之間的代碼同步。