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)。转载请注明出处!

限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

.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)) }

感谢您的支持

¥ 打赏

微信支付

最新文章

  1. COGS14. [网络流24题] 搭配飞行员
  2. 第15章 设备无关位图_15.1 DIB文件格式
  3. C#窗体布局方式
  4. 【T电商 3】Nginx的Http(图片)服务器配置+ftp上传使用说明
  5. JQ 获取单选按钮选中的值
  6. C# 学习的随笔【随时更新】
  7. 《cocos2d-x游戏开发》—— lua学习总结(一)数组的使用
  8. 直接将视频文件原码流转换成YUV,输出到屏幕显示
  9. Visual Studio 使用技巧
  10. 【欧拉函数】 poj 2478
  11. SpringDataJpa的批量 保存 修改 操作
  12. hdu 3864 D_num Pollard_rho算法和Miller_Rabin算法
  13. 安装的 Linux 软件包有多少?
  14. SQL语句(十四)子查询
  15. 有向图强连通分量的Tarjan算法和Kosaraju算法
  16. JS遍历Table的所有单元格内容
  17. 【方法】jQuery无插件实现 鼠标拖动切换图片/内容 功能
  18. bzoj 4033
  19. PHP+phpMyAdmin编程插入数据显示中文乱码的问题
  20. Java面向对象_常用类库api

热门文章

  1. echatrts 各参数快速了解(+实例)
  2. 【小技巧】排名前 16 的 Java 工具类!
  3. Saruman's Army
  4. Java锁--Lock实现原理(底层实现)
  5. io中的特殊流Properties
  6. MySQL-后知知觉的索引
  7. UDP实现在线聊天功能
  8. 分布式系列-分布式ID
  9. vue 手写倒计时,样式需要自己调。( 亲测可用,就是没有样式 )
  10. Robot Framework(10)- 使用资源文件