意外提交;如何在Magit Emacs中不推送未提交的提交

时间:2015-02-20 08:44:27

标签: emacs magit

我做了一次意外的提交,在历史上任何地方都没有任何意义。如何从存在中删除此提交(特别是我不希望它远程显示)。

在magit-status中,它显示:

Unpushed commits:
fe73b07 updated gitignore
974e70d test
ab333e6 trying to go with a flat structure

我该怎么办?

额外奖励:实际上,我只想保留此次提交中的“更新的gitignore”。

3 个答案:

答案 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实现它。