gpt4 book ai didi

git - 如何交换 Git 提交的两个父项的顺序?

转载 作者:IT王子 更新时间:2023-10-29 01:24:34 24 4
gpt4 key购买 nike

merge 提交是指至少有两个父项的提交。这些 parent 按特定顺序排列。

如果我当前在分支 master 上,并且我 merge 到分支 feature 中,我将创建一个新提交,其第一个父级是来自 的提交>master,第二个提交是来自 feature 的提交。通过运行 git log --first-parent,此顺序尤为明显。

*   The merge commit
|\
| * The commit from `feature`
* | The commit from `master`

假设我现在意识到顺序是错误的:我打算通过运行 git checkout feature 将分支 master merge 到 feature 中; git merge 大师。我想交换 merge 提交的父项的顺序,但我不想再次经历解决所有 merge 冲突的麻烦。我该怎么做?

*   The merge commit
|\
* | The commit from `feature`
| * The commit from `master`

最佳答案

实际上,我最近学到了一个非常酷的命令,它可以完全按照您的要求执行:

git commit-tree -p HEAD^2 -p HEAD^1 -m "Commit message" "HEAD^{tree}" 

这将创建一个基于当前 HEAD 的新提交,但假装它的父项是 HEAD^2,HEAD^1(注意这是相反的顺序)。

git-commit-tree 将新修订打印为输出,因此您可以将它与 git-reset-hard 结合使用:

git reset --hard $(git commit-tree -p HEAD^2 -p HEAD^1 -m "New commit message" "HEAD^{tree}")

关于git - 如何交换 Git 提交的两个父项的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25265528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com