如何进行空合并提交(忽略更改)?

Max*_*kov 6 git

自动化CI工具将修订从合并release到master。但是应该忽略发布分支中的某些提交。

让我们考虑以下示例:

Release分支包含两个修复程序:fix-1应该被忽略,并且fix-2应该合并到中master。

base ----------- merge-fix-2 -        master
  \                  /            
   fix-1 --- fix-2 ---                release
Run Code Online (Sandbox Code Playgroud)

通过这种配置,合并fix-2还包括fix-1更改。

为了避免这种情况,我需要空的 merge-commit(ignore-fix-1),仅用于通知Git fix-1已经被合并,并且这些更改在以后的合并中应该被忽略:

base -- ignore-fix-1 -- merge-fix-2 --  master
  \       /             /            
   fix-1 ----- fix-2 ----               release
Run Code Online (Sandbox Code Playgroud)

问题是:如何执行ignore-fix-1 空提交?

Eev*_*vee 9

您可以传递-s ours到git merge使用“我们的”合并策略,它完全符合您的要求:通过完全忽略传入分支来执行“合并”。

也就是说,至少可以说,这对你的历史来说是一件令人惊讶的事情。我假设您有一个令人信服的理由不希望在 中进行修补程序master,但如果此类事情经常发生,您可能需要考虑不同的方法,例如:

  1. 拆分release为stable(for fix-2) 和production(for fix-1),然后经常合并stable为两者 master和production。
  2. Cherry-pick 发布修复,而不是合并它们。

  • 谢谢,“git merge -s ours”就可以了!感谢您的建议,我会考虑稳定版本分支。对我来说,樱桃采摘是一项很好的技术,但对于自动化工具来说却不是。 (2认同)