"Remote Work Via Git"的正確打開方式

CSDN的MD版式確實有待提高,有需要的可以閱讀簡書版

寫在前面

git pull -r origin branch是程序員最常用的Git指令之一了。可現今爲了保證安全性,許多公司的Git Server並不像訪問Github那樣容易,往往得通過VPN才能進行訪問。那麼問題來了,假如你在家裏辦公,連不上VPN腫麼辦?別懵逼,往下看。

場景一

小王,小宋和小馬都是同一個公司的程序員,它們都在同一個項目上工作,本地都有同一個Git Repository。今天輪到小宋和小馬結對編程了,小宋在家,小馬和小王在公司。由於只能通過客戶提供的VPN,並且在公司的網絡下進行連接才能pull到代碼,所以小宋無法獲取最新的代碼,十分沮喪。這時,小馬安慰小宋說:“我可以搭建一個本地Git Server讓你來pull代碼。”

1.首先,小馬查看了自己的IP地址

ifconfig

2.小馬讓小宋在家裏ping一下自己的IP

ping xx.xx.xx.xx

⚠良心提示:如果ping不通,就關閉此頁面,洗洗睡吧

3.小馬搭建一個本地Git服務器

小馬有一個名叫xinjibiaoRepository,在/project/xinjibiao路徑下。
由於小馬可以連接上客戶的VPN,所以她先pull了下代碼,確保自己的代碼是最新的,然後進入project目錄下後:

git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose

如此小馬就將自己的本地Git Server建起來了,並且以當前路徑/project作爲localhost

4.小宋可以pull小馬的代碼啦

因爲小宋的remote只有origin,爲了讓小馬的Git Server作爲自己的新remote,小宋需要:

git add remote xiaoma git://xx.xx.xx.xx/xinjibiao

其中xx.xx.xx.xx爲小馬的IP,xiaoma爲新的remote的別名,如此,小宋就可以把小馬的電腦當作Git Repository的服務器,開始pull代碼啦:

git pull -r xiaoma master

此時小宋在自己master分支上成功的pull到了小馬master上的代碼,也就是最新的代碼,小宋很開心,呵呵。

場景二

小宋成功pull到最新代碼後,在自己的電腦上與小馬結對編程完成了3個commit需要提交,這時才發現,自己是連不上VPN的,代碼都是從小宋那裏pull的,更何談去push代碼呢?這時,聰明的小馬又給小宋出了高招:“你可以把你的提交在本地做成patch文件,然後發給小王,他就能幫你push了。”

於是在小宋的指導下,小馬找到了小王。

1.首先,小馬在本地將自己的3個commit打成patch文件

git format-patch -3 --stdout > wo_he_xiaoma_do_something.patch

指令很簡單,小馬將HEAD中的前3個commit的changes放入一個名爲wo_he_xiaoma_do_something的新的patch文件裏。

2.小宋把patch文件發送給了小王

git apply wo_he_xiaoma_do_something.patch

這樣小王就將小馬和小宋寫的代碼放入到了自己的Reposity中,並且push到了遠端。

⚠良心提示:--check 可以檢查文件名

寫在最後

其實,本文主要講了兩個常用的Git操作:在無法連接國外Git Server的時候如何pull別人的代碼和push自己的代碼,相信大家看完本教程一定能有所收穫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章