- Published on
"Remote Work Via Git"的正确打开方式
- Authors
- Name
- Pursue
写在前面
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 --stat wo_he_xiaoma_do_something.patch
这样小王就将小马和小宋写的代码放入到了自己的Reposity
中,并且 push 到了远端。
⚠ 良心提示:--check 可以检查文件名
写在最后
其实,本文主要讲了两个常用的 Git 操作:在无法连接国外Git Server
的时候如何 pull 别人的代码和 push 自己的代码,相信大家看完本教程一定能有所收获。