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

How to undo local changes to a specific file

我正在尝试撤消对特定文件的本地更改。什么都没有提交。

当我想还原所有更改时,我可以执行 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
...

这与 How to revert a specific file in a old commit on git 类似,但未执行任何提交。与 OP 不同,OP 想要回到任意提交,我只希望文件 return 到 MASTER 的副本。

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

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

你不想要 git revert。这会撤消先前的提交。您希望 git checkout 从 master 获取 git 的文件版本。

git checkout -- filename.txt

一般来说,当你想对单个文件执行git操作时,使用-- filename



2020更新

Git introduced 版本 2.23.0 中的新命令 git restore。因此,如果你有 git 版本 2.23.0+,你可以简单地 git restore filename.txt - 它与 git checkout -- filename.txt 做同样的事情。这个命令的文档确实注意到它目前是实验性的。