Avoiding/minimizing git 当 2 次连续提交编辑相同文件时合并冲突
Avoiding/minimizing git merge conflicts when 2 successive commits edit the same files
我遇到的情况如下[这不是具体的编程问题,但我预见到很快就会发生的事情]
- 我分配了 2 张工单,需要向工具添加 2 个密切相关的功能,分别说功能 1 和功能 2。必须有 2 个单独的提交(或 2 个不同的提交集)与添加这些功能相关
- 添加这两个功能需要编辑大约 95% 的相同源文件
- 实现功能 2 需要引入的更改取决于功能 1 的更改。即
if(feature1 flag enabled) foo; else bar;
- 我刚刚实现了 feature1 并发送了代码审查,代码审查周期大约为 2-5 days.I我确定审查人员会建议进行一些更改
- 然而,当他们正在审查功能 1 时,我想开始实施功能 2
我将如何以 avoid/minimizes 痛苦的合并冲突的方式进行此操作?我不想 check-in/post 在处理功能 1 的审核意见的过程中审核与功能 2 相关的内容。
我的团队使用 git,流量 git。
[不是假设题,实际问题]
鉴于“实现功能 2 需要引入的更改取决于功能 1 的更改”,您可以将功能 2 作为功能的一个分支开始1. 这样,您在处理功能 2 时将功能 1 的评论评论的地址分开,然后您开始处理功能 2,功能 1 代码已经在公共文件中。
那么当feature 1审核完成,即将合并时,您可以:
- 合并功能 1(我假设是为了开发)然后将功能 2 变基到更新的开发
develop - - - - - - - - - - - - - - - - - o (merge feature 1)
\ / \
feature1 - o - o (for-review) - o (fix) - \
\ \
feature2 - o - o - o - - - - - - - - -o (rebase) - o (continue)
- 将功能 2 变基到功能 1 的最终提交上
develop - - - - - - - - - - - - - - - - - o (merge feature 1)
\ /
feature1 - o - o (for-review) - o (fix) -
\ \
feature2 - o - o - o - - - o (rebase) - o (continue)
请注意,这不会完全避免冲突。如果对 feature1 的审查意见要求对公共代码进行一些重构或对实现进行完全重新设计,那么 rebasing feature2 肯定会引入冲突,但至少它在 feature2 分支中进行了本地化。但是在注释主要是语法的情况下,或者例如添加了错误处理等情况下,rebase 应该没有任何问题。
我遇到的情况如下[这不是具体的编程问题,但我预见到很快就会发生的事情]
- 我分配了 2 张工单,需要向工具添加 2 个密切相关的功能,分别说功能 1 和功能 2。必须有 2 个单独的提交(或 2 个不同的提交集)与添加这些功能相关
- 添加这两个功能需要编辑大约 95% 的相同源文件
- 实现功能 2 需要引入的更改取决于功能 1 的更改。即
if(feature1 flag enabled) foo; else bar;
- 我刚刚实现了 feature1 并发送了代码审查,代码审查周期大约为 2-5 days.I我确定审查人员会建议进行一些更改
- 然而,当他们正在审查功能 1 时,我想开始实施功能 2
我将如何以 avoid/minimizes 痛苦的合并冲突的方式进行此操作?我不想 check-in/post 在处理功能 1 的审核意见的过程中审核与功能 2 相关的内容。
我的团队使用 git,流量 git。
[不是假设题,实际问题]
鉴于“实现功能 2 需要引入的更改取决于功能 1 的更改”,您可以将功能 2 作为功能的一个分支开始1. 这样,您在处理功能 2 时将功能 1 的评论评论的地址分开,然后您开始处理功能 2,功能 1 代码已经在公共文件中。
那么当feature 1审核完成,即将合并时,您可以:
- 合并功能 1(我假设是为了开发)然后将功能 2 变基到更新的开发
develop - - - - - - - - - - - - - - - - - o (merge feature 1) \ / \ feature1 - o - o (for-review) - o (fix) - \ \ \ feature2 - o - o - o - - - - - - - - -o (rebase) - o (continue)
- 将功能 2 变基到功能 1 的最终提交上
develop - - - - - - - - - - - - - - - - - o (merge feature 1) \ / feature1 - o - o (for-review) - o (fix) - \ \ feature2 - o - o - o - - - o (rebase) - o (continue)
请注意,这不会完全避免冲突。如果对 feature1 的审查意见要求对公共代码进行一些重构或对实现进行完全重新设计,那么 rebasing feature2 肯定会引入冲突,但至少它在 feature2 分支中进行了本地化。但是在注释主要是语法的情况下,或者例如添加了错误处理等情况下,rebase 应该没有任何问题。