有效地删除已保存的当前更改

时间:2013-03-26 18:58:00

标签: git commit magit

我是从Git和Magit开始的,所以我不知道我的问题是针对哪一个。

有时我将更改保存到文件但后来不想提交它们:我只想回到最后一次提交。

我正试图从Emacs / Magit做这件事,而我所做的只是疯了:

  1. 我存储了这些更改(否则Magit会抱怨未经修改/未经修改的更改)
  2. 我签出了比最后一个更早的提交(如果我只是尝试最后一个Emacs / magit只留下我的更改:它不会修改文件)
  3. 我放下藏品
  4. 我结帐最后一次提交
  5. 这需要很多按键,绝对是疯了。

    我肯定错过了一些非常明显的东西,但根本无法找到:我从Emacs / Magit中有效地删除了最后保存的更改并简单地返回到最后一次提交?

2 个答案:

答案 0 :(得分:1)

我对Emacs / Magit并不熟悉,但我可以告诉你可以从shell运行的等效git命令。

如果我正确理解了您的问题,我相信您正在寻找一种简单的方法来恢复当前工作树中所有已更改的文件。如果不是这样,请不要按照以下步骤操作;)

  • 如果您只想在不触及索引的情况下丢弃文件工作树中的本地更改,则可以执行以下操作:

    git checkout -- <FILE>
    
  • 如果您想在不触及索引的情况下放弃所有本地更改,您可以从回购根目录运行此代码:

    git checkout -- .
    
  • 如果您希望放弃索引和工作树中的所有更改,并希望在结帐后将工作树和索引移动到状态,则可以使用git reset --hard命令。 (请注意工作树中的任何未提交的更改,甚至索引/暂存区域中未提交的更改都将丢失)。

    git reset --hard HEAD
    

    上述命令中的HEAD是可选的BTW。

答案 1 :(得分:1)

magit k中的

是删除内容,因此如果您想删除更改,则只需继续进行要还原的更改,并在其上使用k

您还可以使用X还原工作树中的每个更改(注意,不要撤消此操作)