前言
本文記錄了如何使用git來在兩台機器間同步代碼,一台機器A是本地linux,另一台機器B是騰訊雲Linux。
需求描述
有一份代碼放在linux機器A上,我需要在另一台機器B上查看並編輯它,為了方便兩台機器之間相互同步修改后的代碼,git相比於scp等手動操作的好處:
1. 自動檢查到修改的文件,不要自己去找改了那些文件
2. 附帶版本管理功能
3. 便於擴展:有了第三台或更多機器的話,自己clone一份即可
步驟
1. 在存放原始代碼的機器上,比如A,假設代碼目錄為:/codes/project,
cd /codes/project # 創建git代碼倉庫 git init git add . git commit -m "create project" # 切換到project父目錄,創建一個project-bare目錄 cd .. mkdir project-bare cd project-bare # 從原始代碼倉庫創建bare倉庫,作為“中央”倉庫,其他機器(包括本機的原始倉庫)往這里push,從這里pull git clone --bare ../project ./project-bare.git # 回到project倉庫目錄 cd ../project # 把project-bare添加為remote, git remote add origin ../project-bare.git(此處推薦使用倉庫的絕對地址) git branch --set-upstream-to=origin/master master
2. 在機器B上操作:
假設通過ssh來連接機器A
git clone ssh://<username>@<ip>:<port>/codes/project-bare/project-bare.git ./project
clone下來之后,在機器B上做修改,然后commit,push之后,在機器A上就可以pull到了。反之在機器A的project目錄做修改,commit,push之后,在機器B上也能pull下來了。
若要再添加一台開發機,重復第2步,clone操作即可。
遇到的坑
注意第1步中創建 project-bare.gti 的必要性
如果B直接clone A上的project倉庫,並且將其添加為remote,那么在執行git push操作的時候是會報錯的,因為此時B不知道A是否也在對工作副本進行了修改,直接push過去可能造成working copy的沖突,而創建的project-bare倉庫只記錄倉庫信息不保存working copy,作為一個中央倉庫使用。
————————————————
版權聲明:本文為CSDN博主「elloop」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/elloop/article/details/54898512