git 签出所有文件

git checkout all the files

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

假设我在一个分支中,我做了一些更改。 git status returns "Changes not staged for commit" 中的一组文件,我注意到我想摆脱所有文件中的所有这些更改。我怎样才能用一个命令做到这一点?

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

git checkout -- <file>

我注意到 git checkout -- 单独 returns 所有未提交文件的列表。但是,我找不到一种方法来检查所有这些,比如 git checkout --all.

我检查了 man git checkout 但找不到任何东西。我也看到了 Git: Checkout all files except one 并尝试了 git checkout . 但也没有用。

我是否必须通过循环遍历 git checkout -- 输出以编程方式执行此操作?

如果您位于工作目录的根目录下,您可以git checkout -- .检出当前 HEAD 中的所有文件并替换您的本地文件。

您也可以git reset --hard重置您的工作目录并替换所有更改(包括索引)。

我发现其他有用的方法是:

git checkout <wildcard> 

示例:

git checkout *.html

更一般地说:

git checkout <branch> <filename/wildcard>

如果要签出所有文件'anywhere'

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

当然你可以使用硬重置:

git reset --hard

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

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

所以这里的“某种模式”可以是文件夹或文件名或文件扩展名。