如何撤消对特定文件的本地更改

jww*_*jww 164 git git-revert

我正在尝试撤消对特定文件的本地更改.没有任何承诺.

当我想恢复所有更改时,我可以执行git revert --reset HEAD.但是,在这种情况下,我不想还原所有文件的所有更改.

即使在阅读了git-revert(3)手册页之后,我还不清楚或明白如何恢复文件:

NAME
       git-revert - Revert some existing commits

SYNOPSIS
       git revert [--[no-]edit] [-n] [-m parent-number] [-s] <commit>...
       git revert --continue
       git revert --quit
       git revert --abort
...
Run Code Online (Sandbox Code Playgroud)

这类似于如何在git上恢复旧提交中的特定文件,但是没有执行任何提交.与OP不同,谁想要回到任意提交,我只想让文件返回MASTER的副本.

在SVN下,我只是删除有问题的文件然后执行svn update.

如何将更改还原到单个文件?

mka*_*erg 295

你不想要git revert.这撤消了之前的提交.你想git checkout从master获取git的文件版本.

git checkout -- filename.txt

通常,当您想对单个文件执行git操作时,请使用-- filename.


  • 无所谓.该命令仍然有效.您隐式检查您克隆的任何分支.此外,运行`git status`应该有一个单行解释如何恢复未分级的更改.`(使用"git checkout - <file> ..."来丢弃工作目录中的更改)` (5认同)
  • 这不适合我.仍然说"错误:您对以下文件的本地更改将被合并覆盖" (5认同)
  • 我没有结账.我正在使用git提供的默认工作空间.也就是说,我执行了一个`git clone`然后开始工作. (2认同)
  • `git checkout - "我的文件名用spaces.txt"` - 使用双引号括起你的文件名,以防它有空格. (2认同)
  • 为什么需要`--`?我做了`git checkout file.txt`并完成了同样的事情 (2认同)
  • @CiprianTomoiaga并非严格要求.它用于[Argument Disambiguation](https://git-scm.com/docs/git-checkout#_argument_disambiguation)(以解决分支名称和文件名之间的冲突).如果你提供它,它之后的参数将始终被解释为文件名,这是所需的. (2认同)