我做了一次意外的提交,在历史上任何地方都没有任何意义。如何从存在中删除此提交(特别是我不希望它远程显示)。
在magit-status中,它显示:
Unpushed commits:
fe73b07 updated gitignore
974e70d test
ab333e6 trying to go with a flat structure
我该怎么办?
额外奖励:实际上,我只想保留此次提交中的“更新的gitignore”。
答案 0 :(得分:1)
指向测试,按 E 启动rebase。 M-n 两次交换提交。 C-c C-c 完成。 如果有的话,解决合并冲突。
答案 1 :(得分:0)
这更像是一个git问题而不是emacs或magit问题。如果我理解正确,你想要摆脱旧的提交。解决这个问题的一种方法是重新排序你的提交,而不是去除最后两次提交。
第一个相当于在 rebase 期间选择正确的提交,后者相当于使用git reset
的正确咒语。我建议你看看this link on reordering commits。另外,我建议你在这个有用的fixup section of the step-by-step adventure through git上看一下(吨)。
答案 2 :(得分:0)
就像@ abo-abo所说的那样,通过将点放在要删除的第一个提交上然后按 E (在Magit的next
版本 ee <上启动交互式rebase / KBD>
出现一个新的类似日志的视图,每行都以一个前缀为动作,最初为pick
。然后按 n 移动到要删除的第一个提交,并按 k ,这将删除该行意味着删除该提交。 (这就是在ui中发生的事情,当这些信息后来被提供给Git时,该行实际上已被删除)。这也移动到下一行,在这种情况下是您要删除的其他提交。所以再次按 k 。
既然你要删除的所有提交都被标记为,请按 C-c C-c 告诉Git实现它。