我想“跟进”关于这个问题的另一个问题: Checkout old commit and make it a new commit
但他们说“不要那样做!” 所以看来我必须问一个新问题。(即使这是同一个问题,我认为最适合我的答案并没有按预期工作......
如果我有提交
A-B-C-D-E-F
(想象这些都是 SHA)。我想使整个存储库完全一样C
,然后提交它以创建'G'
与C
. 这样当我完成时,即使 C 和 G 相同,日志也是 ABCDEFG。
C
一个答案是cherry-pick,这看起来很完美,除了它让我解决了和之间的所有冲突F
。我查看了文档,--force
无论如何我都尝试了,然后推荐了--patch
. --patch
最接近,但不是绝对的。那么有没有办法让cherry-pick只选择C
冲突的版本?
另一个最接近的答案是 checkout C
,但我找不到将它保持在同一个分支上的神奇词。我最近完成的培训说在最后使用“魔术破折号”来告诉git
你想要在当前分支上使用它,但无论我做什么,它都会创建一个“(无分支)”分支。
我相信你会说,我对 git(和一般的命令行)很陌生,但我试图自己弄清楚。如果您可以使用您推荐的详细版本,那么它会更好地留在我的脑海中,将不胜感激。( -a
=--all
或-a = --annotate
或-a = --albuquerque?
)
看起来很简单,这正是你可能想要用 git 做的事情——返回之前的提交,而不会丢失中间提交,以防你改变主意。