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服務器
小馬有一個名叫xinjibiao
的Repository
,在/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自己的代碼,相信大家看完本教程一定能有所收穫。