通過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://cv@192.168.1.15/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)。轉載請注明出處!
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。

感謝您的支持

¥ 打賞

微信支付


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM