GIT:什么是 merge 期间的提交优先级?

标签 git branch

我想知道,在下面描述的情况下,在 merge 期间选择提交的优先级是多少。

我有 develop 分支。

D1 - D2 - D3

然后我从中创建了 release 分支并添加了一些提交。

D1 - D2 - D3 - R4 - R5

同时添加了一些开发 promise

D1 - D2 - D3 - D6

然后,我使用 git rebase -i HEAD~3release 分支中删除了一些提交:

D1 - x - x - R4 - R5

如何使用 git merge --no-ff releaserelease 分支 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/

相关文章:

git - 如何从 GitHub 中完全删除提交?

mercurial - 创建一个新分支,做了很多更改,如何查看更改的文件列表?

git - 比较不同分支中相同文件的正确方法

git - 移动分支,使其从 git 中的 master 分支出来

git - 在 GitHub 上可视化分支

git - 使用 'pull'或 'merge' merge 本地分支?

git - 在 Git 中创建分支的干净方法

macos - 使用 exit 在预提交 Hook 中停止 git commit

git - Git 支持 "Copy To"标签吗?

git merge 失败,大小写更改为 "Untracked working tree file"