【问题标题】:Magit revert single fileMagit 恢复单个文件
【发布时间】:2013-06-12 11:20:27
【问题描述】:

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

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

我正在寻找的内容与 vc-dir 缓冲区中的 C-x v u 基本相同。

基本上,我希望做的是:

  • 删除修改后的文件。

  • 从本地仓库拉取。

Magit 似乎无法做到这一点,它似乎更喜欢只删除文件,而不是恢复它。

【问题讨论】:

  • (1) Magit 历史缓冲区肯定支持这一点(虽然我不记得如何),您是否需要其他方式(例如在*magit-status* 中)? (2) 如果你只想恢复到base,为什么不使用vc次要模式C-x v u
  • 您是在谈论丢弃未提交的更改(即恢复到当前提交的版本),还是恢复到先前的提交? git checkout HEAD file 将丢弃未提交的更改。 git checkout HEAD^ file 还将恢复对存储库的最近提交中对文件所做的更改(如果有)。如果该提交不涉及相关文件,则 ^ 实际上是多余的。根据您的“删除并拉取”摘要,您只想丢弃未提交的更改,在这种情况下,Rémi 的答案就是您想要的。

标签: git emacs magit


【解决方案1】:

在 magit 中,您只需要继续处理要还原的块或文件,然后使用 k 放弃修改。有关详细信息,请参阅https://magit.vc/manual/1.4/magit/Staging-and-Committing.html 的相关文档。

【讨论】:

  • 该操作取决于您使用它的位置。如果文件未被 git 跟踪,它将删除该文件。但是如果文件被跟踪,它会丢弃修改。请注意,一旦您的文件在 git 中,就很难将其从历史记录中完全删除。
  • 我觉得倒过来也挺合理的,在commit之后:如果你已经提交了文件和其他更改,你可以revertv,然后@987654326 @要保留更改的反向更改。
【解决方案2】:

打开文件后,您可以M-x magit-file-checkout

【讨论】:

  • 哪个版本的emacs/magit?
  • 自 Magit 2.3.0 起可用。
  • magit-checkout-file 已弃用,请改用magit-file-checkout
  • 这是一个很好的补充,但也有很多提示。我想知道是否有办法在点上使用 fie 并默认为 HEAD
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2015-10-08
  • 1970-01-01
  • 2018-02-20
  • 2019-05-01
  • 2016-06-07
相关资源
最近更新 更多