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

Git 有效地删除已保存的当前更改,git,commit,magit,Git,Commit,Magit,我从Git和Magit开始,所以我不知道我的问题具体针对哪一个 有时我会将更改保存到文件中,但不想提交它们:我只想返回到上次提交 我正试图从Emacs/Magit做到这一点,我所做的简直是疯了: 我隐藏更改(否则Magit会抱怨未限制/未隐藏的更改) 我签出一个比上一个更早的提交(如果我只是尝试上一个Emacs/magit,它只会保留我的更改:它不会修改文件) 我把藏品扔了 我签出最后一次提交 这需要大量的按键,简直是疯了 我肯定错过了一些非常明显的东西,但就是找不到什么:因此我确实有效地从Em

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

有时我会将更改保存到文件中,但不想提交它们:我只想返回到上次提交

我正试图从Emacs/Magit做到这一点,我所做的简直是疯了:

  • 我隐藏更改(否则Magit会抱怨未限制/未隐藏的更改)
  • 我签出一个比上一个更早的提交(如果我只是尝试上一个Emacs/magit,它只会保留我的更改:它不会修改文件)
  • 我把藏品扔了
  • 我签出最后一次提交
  • 这需要大量的按键,简直是疯了


    我肯定错过了一些非常明显的东西,但就是找不到什么:因此我确实有效地从Emacs/Magit中删除了上次保存的更改,然后简单地返回到上次提交?

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

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

    • 如果您只希望放弃工作树中对文件的本地更改,而不接触索引,则可以执行以下操作:

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

      顺便说一句,上述命令中的
      头是可选的


    在magit
    k
    中,是指删除内容,因此如果要删除更改,只需继续执行要还原的更改,并在其上使用
    k


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

    您也可以去
    git checkout--file
    取回该文件。@vonbrand-我已经将其作为列表中的第一项,只是没有清楚地说出它;)是否有某种方法可以在magit模式下运行此功能?这就是问题所在,而不是如何掏钱。
    git checkout -- .
    
    git reset --hard HEAD