0

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

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

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

  1. 我存储更改(否则 Magit 会抱怨未提交/未存储的更改)
  2. 我签出比上一个更旧的提交(如果我只是尝试最后一个 Emacs / magit 只是将我的更改留在那里:它不会修改文件)
  3. 我放下藏匿处
  4. 我签出最后一次提交

这需要大量的按键并且绝对是疯狂的。

我肯定遗漏了一些完全明显的东西,但根本找不到什么:所以我确实有效地从 Emacs / Magit 中删除了最后保存的更改,然后简单地回到最后一次提交?

4

2 回答 2

1

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

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

  • 如果您只想放弃工作树中文件的本地更改而不触及索引,您可以这样做:

    git checkout -- <FILE>
    
  • 如果你想放弃所有本地更改而不触及索引,你可以从你的 repo 的根目录运行它:

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

    git reset --hard HEAD
    

    上面的HEAD命令是可选的 BTW。

于 2013-03-26T19:06:49.347 回答
1

在 magitk中是放弃东西,所以如果你想放弃改变,你只需要继续你想要恢复的改变,并使用k它。

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

于 2013-03-26T19:37:54.793 回答