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