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 https://blogs.perficient.com/2016/10/11/creating-shared-repository-between-two-local-machine/

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

本文作者 :phillee

發表日期 :2021年9月29日

本文連結https://www.cnblogs.com/phillee/p/15353020.html

版權宣告 :自由轉載-非商用-非衍生-保持署名(創意共享3.0許可協議/CC BY-NC-SA 3.0)。轉載請註明出處!

限於本人水平,如果文章和程式碼有表述不當之處,還請不吝賜教。

.outter_box { text-align: center }
.button { background-color: rgba(83, 168, 73, 1); border: none; border-radius: 6px; color: rgba(255, 255, 255, 1); padding: 9px 24px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px }
.img_box { border: none; color: rgba(255, 255, 255, 1); text-align: center; vertical-align: middle }
.demo { width: 208px; height: 260px; margin: 0 auto }
.demo img { -webkit-filter: drop-shadow(2px 2px 5px rgba(0,0,0,.5)); filter: drop-shadow(2px 2px 5px rgba(0,0,0,.5)) }

感謝您的支援

¥ 打賞

微信支付