Magit还原单个文件


77

问题是关于Emacs功能的Magit主模式,而关于如何通过命令行界面执行此操作的问题则少了。

我只有一个本地Git存储库。如何将所选文件还原到以前的版本?我相信为此的Git命令一定是类似的东西,git checkout HEAD^ path/to/file但我在这里也可能是错的,只是在猜测。

我正在寻找本质上是一样的东西C-x v uvc-dir缓存。

本质上,我希望做的是:

  • 删除修改后的文件。

  • 从本地仓库中提取。

但是Magit似乎无法做到这一点,它似乎更喜欢删除文件而不是还原文件。

git  emacs  magit 

(1)Magit历史记录缓冲区绝对支持(尽管我不记得如何),您是否需要其他方法(例如*magit-status*)?(2)如果您只想恢复为基本vc模式,为什么不使用次要模式C-x v u
lukstafi 2013年

1
您是在谈论放弃未提交的更改(即恢复为当前提交的版本),还是恢复为先前的提交?git checkout HEAD file会丢弃未提交的更改。git checkout HEAD^ file还会还原对存储库的最新提交中对该文件所做的更改(如果有)。如果该提交不涉及所涉及的文件,则^实际上是多余的。在“删除并提取”摘要中,您只想丢弃未提交的更改,在这种情况下,Rémi的答案就是您想要的。
phils 2013年

Answers:


90

在magit中,您只需要打开要还原的块或文件,然后k放弃修改即可。有关更多详细信息,请参见https://magit.vc/manual/1.4/magit/Staging-and-Committing.html上的相关文档。


1
操作取决于您在哪里使用它。如果git不跟踪该文件,它将删除该文件。但是,如果文件被跟踪,它将放弃修改。请注意,一旦您的文件位于git中,就很难将其从历史记录中完全删除。
雷米

3
我认为,在commit以下情况下也可以反向使用它:如果将文件与其他更改一起提交,则可以revert使用v,然后k在要保存更改的位置进行反向更改。
lukstafi 2013年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.