gpt4 book ai didi

git - 恢复 cherry-pick --abort?

转载 作者:行者123 更新时间:2023-12-04 17:48:17 28 4
gpt4 key购买 nike

在过去的一周里,我从我的主分支到另一个使用命令的分支挑选了超过 70 个提交:

git cherry-pick -x -n <commit-id>
(made some modifications and then)
git commit

状态表示您的分支领先于 'origin/another-branch' 76 次提交。

刚才我以为我可以继续我的任务并选择一些提交。今天的第一次提交是错误的,想要撤消这种挑选,并使用以下命令:
git cherry-pick --abort

繁荣,所有 70 多个提交似乎都消失了。状态表示您的分支领先于 'origin/another-branch' 2 次提交。

Reflog 显示最后两行:
c398477f HEAD@{0}: reset: moving to c398477fa2b2e0e78cb628c75df81b2c1ec411cd
8369312d HEAD@{1}: checkout: moving from master to another-branch

请说有 以某种方式可以恢复中止? 这些提交仅在我的本地分支中。而且, 即使在我明确提交了每一个提交之后,它到底是如何删除所有精选的提交的?

这是我一周前开始 cherry-pick 时的 reflog:
d8a71aca HEAD@{52}: checkout: moving from another-branch to dev
8369312d HEAD@{53}: commit: xxx
...
3bb1ff07 HEAD@{127}: commit: xxx
2b9b6542 HEAD@{128}: commit: xxx
c398477f HEAD@{129}: reset: moving to HEAD^
b373db60 HEAD@{130}: commit: xxx
c398477f HEAD@{131}: commit: xxx
8fb419aa HEAD@{132}: commit: xxx
844cbe24 HEAD@{133}: reset: moving to 844cbe2499aadcd0d014999ddb6f847c1d940440
844cbe24 HEAD@{134}: reset: moving to 844cbe24
41e7dbed HEAD@{135}: checkout: moving from 844cbe2499aadcd0d014999ddb6f847c1d940440 to aller-dev
844cbe24 HEAD@{136}: checkout: moving from another-branch to 844cbe24
41e7dbed HEAD@{137}: reset: moving to HEAD^
844cbe24 HEAD@{138}: reset: moving to HEAD^
81bf86ac HEAD@{139}: cherry-pick: xxx
844cbe24 HEAD@{140}: checkout: moving from dev to another-branch

reflog --all 相同:
c398477f refs/heads/another-branch@{0}: reset: moving to c398477fa2b2e0e78cb628c75df81b2c1ec411cd
8369312d refs/heads/another-branch@{1}: commit: xxx
6a4da110 refs/heads/another-branch@{2}: commit: xxx
...
2b9b6542 refs/heads/another-branch@{75}: commit: xxx
c398477f refs/heads/another-branch@{76}: reset: moving to HEAD^
b373db60 refs/heads/another-branch@{77}: commit: xxx
c398477f refs/heads/another-branch@{78}: commit: xxx
8fb419aa refs/heads/another-branch@{79}: commit: xxx

我可以直接 checkout 到 8369312d 这是之前的 reset: moving to c398477fa2b2e0e78cb628c75df81b2c1ec411cd ?

最佳答案

我认为(但不能用上面的文字证明)你一定已经通过多次提交开始了最初的挑选操作,例如,使用类似的东西:

git cherry-pick -x 1234567..fedcba9   # possibly with -n too

这将触发 Git 的“排序器”。如果某个单独的拣选操作失败,则剩下的拣选工作将完成,并完全退出命令。这将导致稍后的 git cherry-pick --abort 将事情放回保存的 ORIG_HEAD ,使您在两者之间进行的 70 个奇怪的提交似乎消失了。

Can I just checkout to 8369312d which is previous to that reset: moving to c398477fa2b2e0e78cb628c75df81b2c1ec411cd?



我相信是这样。请注意,这会给您一个“分离的 HEAD”,这很好。如果 git log 然后显示您想要的内容,随后的 git checkout -b <newbranch> 将创建一个新的分支名称,您可以使用它来处理提交。

关于git - 恢复 cherry-pick --abort?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47213772/

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