合并相互依赖的分支
Merge branches depending on each other
抱歉,这个问题被问了很多次,但我就是找不到解决问题的方法。
我有很多任务,其中一些依赖于其他任务,所以可以说,我们有:
- 任务 1:添加 table(需要合并)
- 任务 2:使用任务 1 中的 table,添加按钮以使用表单添加内容(需要合并)
- 任务 3:使用以前的解决方案,但在 table 中添加了一些内容后,您可以单击它来查看详细信息(需要合并)
因此,正如您所见,任务 1 需要合并到 master 中,任务 2 依赖于任务 1,因此您必须包含它,还需要合并,任务 3 需要任务 1 和任务 2。
如您所知,代码审查需要很多时间,所以我不想坐等,但我想在审查任务 1 的同时继续执行任务 2,然后在执行任务时处理任务 3 2 正在审核。
有什么办法吗?我使用带有 Gitlens 扩展的 VS Code,也使用终端来推送。
感谢您的宝贵时间。
正在安装一个顶部的分支?那将是标准方法,唯一要记住的是,当您 "updating" 时,您必须更加小心。例如,task2 分支从 task1 分支开始,而 task1 仍在开发中。一段时间后,task1 收到了一些提交。为了让 task2 得到它们:
git checkout task2
git rebase task1
这应该足以将 task2 移动到 task1 的新位置之上...但是当 task1 "moves" 时事情变得更加棘手(例如,task1 被重新定位)。在这种情况下,您不能只是 "rebase",因为如果您尝试这样做,git 会尝试将来自 task1 的 "previous" 修订变基到 track1 的新位置之上。可以很简单地假设如果 task1 保持不变,那么您会从 git 收到一些消息,说明补丁已应用并且您可以告诉 git 跳过它们....但真正要记住的是,实际上,新的 task1 分支可能 非常 与您开始工作的旧 task1 不同......并且假设 task1 不是一部分task2 的开发(如两个独立的开发),那么您将不得不将 task2 only 变基到 task1 的新位置。所以,你必须这样做:
git rebase --onto task1 old-task1-position task2
这样你就要求 git 重新定位到 task1 的 new 位置分支 task2 丢弃所有以前的修订,这些修订是 old-task1 历史的一部分-位置。
以这种方式工作并不难,只需要练习和了解发生了什么。
抱歉,这个问题被问了很多次,但我就是找不到解决问题的方法。
我有很多任务,其中一些依赖于其他任务,所以可以说,我们有:
- 任务 1:添加 table(需要合并)
- 任务 2:使用任务 1 中的 table,添加按钮以使用表单添加内容(需要合并)
- 任务 3:使用以前的解决方案,但在 table 中添加了一些内容后,您可以单击它来查看详细信息(需要合并)
因此,正如您所见,任务 1 需要合并到 master 中,任务 2 依赖于任务 1,因此您必须包含它,还需要合并,任务 3 需要任务 1 和任务 2。
如您所知,代码审查需要很多时间,所以我不想坐等,但我想在审查任务 1 的同时继续执行任务 2,然后在执行任务时处理任务 3 2 正在审核。
有什么办法吗?我使用带有 Gitlens 扩展的 VS Code,也使用终端来推送。
感谢您的宝贵时间。
正在安装一个顶部的分支?那将是标准方法,唯一要记住的是,当您 "updating" 时,您必须更加小心。例如,task2 分支从 task1 分支开始,而 task1 仍在开发中。一段时间后,task1 收到了一些提交。为了让 task2 得到它们:
git checkout task2
git rebase task1
这应该足以将 task2 移动到 task1 的新位置之上...但是当 task1 "moves" 时事情变得更加棘手(例如,task1 被重新定位)。在这种情况下,您不能只是 "rebase",因为如果您尝试这样做,git 会尝试将来自 task1 的 "previous" 修订变基到 track1 的新位置之上。可以很简单地假设如果 task1 保持不变,那么您会从 git 收到一些消息,说明补丁已应用并且您可以告诉 git 跳过它们....但真正要记住的是,实际上,新的 task1 分支可能 非常 与您开始工作的旧 task1 不同......并且假设 task1 不是一部分task2 的开发(如两个独立的开发),那么您将不得不将 task2 only 变基到 task1 的新位置。所以,你必须这样做:
git rebase --onto task1 old-task1-position task2
这样你就要求 git 重新定位到 task1 的 new 位置分支 task2 丢弃所有以前的修订,这些修订是 old-task1 历史的一部分-位置。
以这种方式工作并不难,只需要练习和了解发生了什么。