体系结构:
- git repo A在没有互联网的PC A上
- git repo C是gitA的副本,通过git Clone创建,位于hdd上
- git repo B是gitC的副本,通过git Clone创建,位于pcB上
场景:
- gitA是团队成员之间使用的共享文件夹
- 我在gitB上工作
- 我需要从gitB->gitC->gitA更新文件
- 然后从gitA->gitC->gitB解决与gitA中成员的冲突
如何实现上述场景?
您正在以三角形的方式工作。
祝福回购是A,在没有互联网连接的机器上共享。你在B上工作。A是B的起源,因此您可以从B推/拉到A。这可以通过使用Tortoise上下文菜单的工作回购来实现,应该没什么大不了的
C是a的备份,在有互联网连接的机器上。因此,C实际上是受祝福的repo,而B是C的子代。B应该能够直接推/拉到CB和C不是父母/子女关系,而是兄弟姐妹。你可能会说C是你的同事Carlo正在开发的PC C上的一个存储库
你想从B推到C。为此,B的遥控器应该设置为C,而不是A。然后你想从C推送到A。换言之,你想推送对你的同事Carlo的更改,然后让Carlo将任何内容发布到幸运的存储库A。这里唯一的问题是Carlo不存在
我建议你把C做为a的镜像副本。避免推到CC是a的备份,因此继续进行,并且C中的。B是一个工作副本,将直接推到git fetch
来自aaC,并直接从aC中拉出"嘿,但我们为解决A中的冲突所做的任何更改都将在B中,我不想要!">不,你想要,因为这些更改迟早会进入B中。
您的备份C应该是git clone --mirror
,请参阅文档:
设置源存储库的镜像。这意味着CCD_ 3。与
--bare
相比,--mirror
不仅将源的局部分支映射到目标的局部分支,还映射了所有引用(包括远程跟踪分支、笔记等(并设置refspec配置,使得所有这些ref都被git remote update
覆盖在目标存储库中。
只要您能够将U盘(?(连接到没有互联网连接的A,就可以使用git remote update
将您的更改从C推送到A。