当你不能推或 pull 时的 Git 工作流

标签 git git-workflow git-patch

这是一个 recurring我的问题,但我想重申一下。

快速解释一下我的情况:我所处的环境中没有 git 服务器,也没有共享分区或编码人员之间的任何公共(public)点。没有,不会有,不能有。期间。

我正在尝试提出一个工作流解决方案,即使在我们设法让我们的代表保持合理同步的环境中也是如此。

我目前正在尝试的解决方案使用讨论组来分发补丁,两个主要分支并且工作流程看似很短,如下所示:

  • 分支是marsteryours
  • master 是同步分支,它将让您保持最新状态并跟踪其他开发人员仍然没有您的代码的内容。
  • yours 将成为您的新主人,并且是您的最终代码所在的位置。你不在 master 工作。
  • 每个人都将补丁发送到讨论列表。
  • 我认为很少两个人会在同一个文件中工作。

工作流中有两个主要操作:

生成补丁:

  1. 到达你的
  2. master生成补丁(git format-patch master)
  3. 转到master
  4. yours merge 到 master
  5. >> 转到yours,继续使用yours

应用补丁:

  1. 转到master分支
  2. 应用收到的补丁
  3. 转到你的分支
  4. master merge 到 yours
  5. > 继续使用你的

如果我做对了,这应该使 master 分支与其他分支合理同步。

并不是说 yours 分支只是用来帮助跟踪其他人拥有或不拥有的东西。

有几个问题我想弄清楚是否会太麻烦:

  • 应用补丁的顺序?
  • 如何避免和检测是否有人错过补丁?
  • 如果有人错过补丁,会有多大问题?
  • 这可能会产生我什至没有想到的其他问题?

谢谢!

最佳答案

与其拥有两个分支的一个仓库,不如拥有两个仓库:

  • 其中只有 master 分支
  • 一个(从第一个克隆而来)与 masteryours

那样我可以:

  • 将我需要的内容从 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/

相关文章:

git - 用干净的历史 merge 分支

git - 从当前工作目录中未提交的更改创建一个 git 补丁

git - 如何为分支中的所有提交生成补丁?

Git 补丁 - 补丁不适用

android - Github 存储库 - LockFile 存在

git clone 失败并显示 "index-pack"失败?

git - 丢失了我的 git repo 中的所有文件,重置无效。发生了什么?

git - 从另一个分支在 Git 中创建一个分支

git - 如何为三个不同的客户构建一个 Git 存储库

git svn "unable to chdir up to ' .'"