检查所有的文件

如何去除存储库中所有文件中的所有更改?

假设我在一个分支机构,我做了一些改变。git status返回一组“未进行提交的更改”中的文件,我注意到我希望在所有文件中去掉所有这些更改。我如何用一个简单的命令做到这一点?

我知道我可以执行以下操作只检出一个文件:

git checkout -- <file>

我注意到单独的 git checkout --返回所有未提交文件的列表。然而,我不能找到一种方法来检出所有这些,像 git checkout --all

我检查了 man git checkout,没有找到任何东西。我也看到了 Git: 检查除一个文件外的所有文件和尝试 git checkout .,也没有工作。

我是否必须通过循环 git checkout --输出以编程方式完成?

214488 次浏览

如果你是工作目录的根目录,你可以使用 git checkout -- .检出当前 HEAD 中的所有文件并替换本地文件。

你也可以做 git reset --hard来重置你的工作目录和替换所有的改变(包括索引)。

我发现另一个有用的方法是:

git checkout <wildcard>

例如:

git checkout *.html

更一般地说:

git checkout <branch> <filename/wildcard>

如果你想签出所有的文件’任何地方’

git checkout -- $(git rev-parse --show-toplevel)
  • 如果你在跟踪文件的基本目录位置,那么 git checkout .将工作,否则它将不工作

当然,你可以使用硬重置:

git reset --hard

此外,我使用简单的方法允许指定模式:

git checkout `git ls-files -m | grep "some pattern"`

因此,这里的“一些模式”可能是文件夹或文件名或文件扩展名。