这是一个 recurring我的问题,但我想重申一下。
快速解释一下我的情况:我所处的环境中没有 git 服务器,也没有共享分区或编码人员之间的任何公共(public)点。没有,不会有,不能有。期间。
我正在尝试提出一个工作流解决方案,即使在我们设法让我们的代表保持合理同步的环境中也是如此。
我目前正在尝试的解决方案使用讨论组来分发补丁,两个主要分支并且工作流程看似很短,如下所示:
- 分支是
marster
和yours
master
是同步分支,它将让您保持最新状态并跟踪其他开发人员仍然没有您的代码的内容。yours
将成为您的新主人,并且是您的最终代码所在的位置。你不在master
工作。- 每个人都将补丁发送到讨论列表。
- 我认为很少两个人会在同一个文件中工作。
工作流中有两个主要操作:
生成补丁:
- 到达
你的
- 从
master
生成补丁(git format-patch master
) - 转到
master
- 将
yours
merge 到master
- >> 转到
yours
,继续使用yours
应用补丁:
- 转到
master
分支 - 应用收到的补丁
- 转到
你的
分支 - 将
master
merge 到yours
- > 继续使用
你的
如果我做对了,这应该使 master
分支与其他分支合理同步。
并不是说 yours
分支只是用来帮助跟踪其他人拥有或不拥有的东西。
有几个问题我想弄清楚是否会太麻烦:
- 应用补丁的顺序?
- 如何避免和检测是否有人错过补丁?
- 如果有人错过补丁,会有多大问题?
- 这可能会产生我什至没有想到的其他问题?
谢谢!
最佳答案
与其拥有两个分支的一个仓库,不如拥有两个仓库:
- 其中只有
master
分支 - 一个(从第一个克隆而来)与
master
和yours
那样我可以:
- 将我需要的内容从
yours
分支 merge 到“yours
”仓库中的master
- 从
yours
存储库的master
分支获取更改到master
存储库的master
分支 - 做一个incremental bundle来自
master
仓库(生成一个文件,更易于交流) - 邮寄那个文件,连同
master
存储库的 SHA1
在接收端,我会:
- 从包中 pull 入
master
repo - 检查它的 SHA1(这样,我确定我没有遗漏任何东西)
- 将
master
仓库中的master
分支 pull 入“你的”仓库的master
分支 - 将我需要的内容从
master
分支 merge 到yours
分支。
拥有两个独立存储库的想法是让一个带有 SHA1 的存储库可以在接收端进行检查:它在两个站点中必须完全相同。
关于当你不能推或 pull 时的 Git 工作流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6647046/