我想知道,在下面描述的情况下,在 merge 期间选择提交的优先级是多少。
我有 develop
分支。
D1 - D2 - D3
然后我从中创建了 release
分支并添加了一些提交。
D1 - D2 - D3 - R4 - R5
同时添加了一些开发 promise
D1 - D2 - D3 - D6
然后,我使用 git rebase -i HEAD~3
从 release
分支中删除了一些提交:
D1 - x - x - R4 - R5
如何使用 git merge --no-ff release
将 release
分支 merge 到 develop
?我想要这样:
D1 - D2 - D3 - R4 - R5 - D6
我是否有可能通过提交删除获得 merge 分支?
D1 - x - x - R4 - R5 - D6
我期待着“幕后”的解释:)
最佳答案
如果您在 release
中执行了 revert
,它将在 merge 时还原那些提交。如果你做了一个 rebase
它不会。那是因为 revert
显示您明确删除了它们,并在历史记录中保留了该事实。 rebase
使这些提交看起来在 release
中从未发生过,因此没有理由让 merge
删除它们。
就优先级而言,无论如何,两个分支都具有相同的优先级。回到分支的最后一次提交,如果每个分支以不同的方式更改某些内容,git 会将其显示为 merge 冲突。 rebase
不还原这些提交的唯一原因是因为您重写了历史记录以使其看起来好像它们从一开始就从未出现在分支中。
顺便说一句,您确实意识到可以在 git 中测试这些东西,无论是在克隆中还是通过小心处理您的分支,所花的时间可能比提出问题所花的时间还少?
关于GIT:什么是 merge 期间的提交优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12280829/