通過Git在本地區域網中的兩台電腦間同步程式碼

0.前言

一般情況下同步程式碼可以通過在GitHub/GitLab等網站新建遠程倉庫,所有機器都向倉庫推送或者從倉庫下拉更新。

上述過程步驟也不算複雜,不過有時候我們考慮到倉庫的安全性等因素,只想在區域網內共享倉庫,並且允許區域網中指定的機器推送或下拉更新。

這就是本文試圖記錄的操作過程的背景。

1.新建中轉倉庫

中轉倉庫其實是一個裸倉庫,這個倉庫文件夾里只有.git里的版本資訊,沒有程式碼。
所有工作者都只與中轉倉庫建立聯繫,這樣衝突只會發生在中轉倉庫,各機本地程式碼不會衝突,從而最大程度上避免混亂。

cv:misc_codes cv$ mkdir myrepo.git && cd myrepo.git

cv:myrepo.git cv$ git init --bare --shared

cv:myrepo.git cv$ git remote add origin file:///Users/cv/misc_codes/myrepo.git

cv:myrepo.git cv$ git remote
origin

顯示結果為origin,表示我們操作成功且已經生效。

然後注意要將中轉倉庫的路徑設置為區域網共享狀態。macOS系統下,「系統偏好設置」——>「共享」——>「文件共享」複選框——>「共享文件夾」添加倉庫所在路徑。

2.構建本機克隆倉庫

在設置中轉倉庫的機器上新建克隆倉庫,可以修改程式碼並上傳。

cv:misc_codes cv$ git clone file:///Users/cv/misc_codes/myrepo.git mylocalrepo_a.git

cv:misc_codes cv$ cd mylocalrepo_a.git

cv:mylocalrepo_a.git cv$ cat > README
Hello world!

修改之後保存並提交。

cv:mylocalrepo_a.git cv$ git add .
cv:mylocalrepo_a.git cv$ git commit -m "Init the test repo"
cv:mylocalrepo_a.git cv$ git branch --unset-upstream
cv:mylocalrepo_a.git cv$ git push -u origin --all

3.在其他機器同步倉庫

在另外的機器上新建克隆倉庫,通過ssh建立倉庫之間的連接。可以用於拉取和上傳更新。

通過ssh的方式需要知道中轉倉庫所在機器的用戶名和IP地址,基本格式為git clone ssh://username@ipaddr/path/to/repo.git localrepo.git。主要步驟展示如下。

cvxy:misc_codes cvxy$ git clone ssh://[email protected]/Users/cv/misc_codes/myrepo.git mylocalrepo_b.git

cvxy:misc_codes cvxy$ cd mylocalrepo_b.git

cvxy:mylocalrepo_b.git cvxy$ git pull origin master

cvxy:mylocalrepo_b.git cvxy$ cat >> README
Great idea.

保存修改並推送到中轉倉庫。

cvxy:mylocalrepo_b.git cvxy$ git add .
cvxy:mylocalrepo_b.git cvxy$ git commit -m "Modification from machine b"
cvxy:mylocalrepo_b.git cvxy$ git push origin master

至此,在不創建遠程倉庫的前提下可以實現在不同機器之間的同步更新。

(全文完)


參考資料

[1] Creating a Shared Repository Between Two Local Machines //blogs.perficient.com/2016/10/11/creating-shared-repository-between-two-local-machine/

[2] 使用git在區域網機器上進行程式碼同步 //blog.csdn.net/sinat_24899403/article/details/103001865

本文作者 :phillee
發表日期 :2021年9月29日
本文鏈接 ://www.cnblogs.com/phillee/p/15353020.html
版權聲明 :自由轉載-非商用-非衍生-保持署名(創意共享3.0許可協議/CC BY-NC-SA 3.0)。轉載請註明出處!
限於本人水平,如果文章和程式碼有表述不當之處,還請不吝賜教。

感謝您的支援

¥ 打賞

微信支付