通过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)。转载请注明出处!
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
.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)) }
感谢您的支持
微信支付
通过Git在本地局域网中的两台电脑间同步代码的更多相关文章
- win10如何在局域网中设置一台电脑的固定ip地址
在工作和生活中,经常要遇到远程访问一台电脑的情况,但是在局域网中如果不进行设置,通常一台电脑的ip是自动生成的,,没有固定,这就导致下次访问这个地址时,不能正常访问,下面就交大家如何在win10系统中 ...
- java实现两台电脑间TCP协议文件传输
记录下之前所做的客户端向服务端发送文件的小项目,总结下学习到的一些方法与思路. 注:本文参考自<黑马程序员>视频. 首先明确需求,在同一局域网下的机器人A想给喜欢了很久的机器人B发送情书, ...
- 使用ARP欺骗, 截取局域网中任意一台机器的网页请求,破解用户名密码等信息
ARP欺骗的作用 当你在网吧玩,发现有人玩LOL大吵大闹, 用ARP欺骗把他踢下线吧 当你在咖啡厅看上某一个看书的妹纸,又不好意思开口要微信号, 用arp欺骗,不知不觉获取到她的微信号和聊天记录,吓一 ...
- 处于同一个域中的两台Sql server 实例无法连接
处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...
- 处于同一域中的两台SQL Server 实例无法连接
处于同一个域中的两台Sql server 实例无法连接,报的错误信息如下: A network-related or instance-specific error occurred while es ...
- Cisco Packet Tracer中两台电脑通信设置
Cisco Packet Tracer是网络初学者仿真模拟网络环境的必备工具.今天我们来模拟下两台电脑之间的通信. Cisco Packet Tracer版本6.2.0 一.添加设备 1.这里添加一个 ...
- Python_架构、同一台电脑上两个py文件通信、两台电脑如何通信、几十台电脑如何通信、更多电脑之间的通信、库、端口号
1.架构 C/S架构(鼻祖) C:client 客户端 S:server 服务器 早期使用的一种架构,目前的各种app使用的就是这种架构,它的表现形式就是拥有专门的app. B/S架构(隶属于C/ ...
- 两台电脑使用ROS通讯
一.ROS分布式多机通讯简介 ROS是一种分布式软件框架,节点之间通过松耦合的方式组合,在很多应用场景下,节点可以运行在不同的计算平台上,通过Topic,Service通信. 但是各个节点只能共同拥有 ...
- 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...
随机推荐
- WPF 显示3D密集场景,堆场管理系统
又好久好久没写博客了,这次接着上文https://www.cnblogs.com/CSSZBB/p/12785380.html,上文用WPF 的绘图功能,制作了一个伪3D的2.5D控件ThreeDBo ...
- 自旋锁&信号量
1. 自旋锁 Linux内核中最常见的锁是自旋锁.一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁".如果锁可用,则"锁定"位被 ...
- Redis常用技术
Xml配置: <?xml version='1.0' encoding='UTF-8' ?> <!-- was: <?xml version="1.0" e ...
- JDBC基础篇(MYSQL)——通过JDBC连接数据库的三种方式
package day01_jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManage ...
- Python代码阅读(第2篇):数字转化成列表
本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项. 本篇阅读的代码片段来自于30-seconds-of-python. digitize def d ...
- 4种Golang并发操作中常见的死锁情形
摘要:什么是死锁,在Go的协程里面死锁通常就是永久阻塞了,你拿着我的东西,要我先给你然后再给我,我拿着你的东西又让你先给我,不然就不给你.我俩都这么想,这事就解决不了了. 本文分享自华为云社区< ...
- SpringBoot笔记(6)
一.数据访问(SQL) 1.数据源的自动配置-HikariDataSource 1.导入JDBC场景 <dependency> <groupId>org.springframe ...
- H5、C3基础知识笔记
HTML5 本文内容参考于"HTML5|W3scool"教程 简介 是最新的 HTML 标准,拥有新的语义.图形以及多媒体元素 提供了新的 API 简化了 web 应用程序的搭建 ...
- 学习笔记之IdentityServer4(一)
快速入门IdentityServer4 概述 将 IdentityServer 添加到 ASP.NET Core 应用程序 配置 IdentityServer 为各种客户发行代币 保护 Web 应用程 ...
- Python 高级特性(5)- 迭代器 Iterator
前言 迭代器貌似是 Python3 才有的(猜的),在廖雪峰大神的网站中 Python2 是没有迭代器一栏的 可 for 循环的对象 常见集合数据类型(迭代对象):list.tuple.dict.se ...