假设我有一个包含数百个文件的目录。我修改了其中几个文件,但之后我意识到我的更改是错误的。如果我执行:
git checkout whole_folder
然后所有的东西都需要重新检查,我必须重新编译所有内容。有没有一种方法可以使检出只影响修改过的文件,或者我需要对每个文件分别运行 checkout
命令?
假设我有一个包含数百个文件的目录。我修改了其中几个文件,但之后我意识到我的更改是错误的。如果我执行:
git checkout whole_folder
然后所有的东西都需要重新检查,我必须重新编译所有内容。有没有一种方法可以使检出只影响修改过的文件,或者我需要对每个文件分别运行 checkout
命令?
试一试这个:
$ git checkout `git ls-files -m`
-m 仅列出修改过的文件。
cmd.exe
shell。 - Geogit checkout -- $(git ls-files -m)
此外,它还检查已删除的文件。
如果您只想检出修改过的文件,则可以尝试以下方法:
git checkout -- $(git status -uno | grep --colour=never '#' | awk '{ print $2 $3 }' | grep --colour=never ^modified: | cut -c10-)
git checkout -- $(git status | grep modified: | cut -c14-)
- user1029978你所做的是正确的,但是为了防止目录名与分支名相同的情况,建议添加一个消歧标记--
,例如:
git checkout -- whole_folder
Git只会更新它实际需要更改的文件的时间戳,因此如果您的基于依赖关系的构建工具正确使用了修改时间,那么应该只重建最少量的文件才是安全的。如果您看到不同的行为,则可能是一个错误。
git checkout -- <path>
(比git checkout whole_folder
更为安全的方式),那么时间戳仅对那些未被该命令更改的文件保持不变。这意味着,根据修改时间戳,你的构建过程仍然只需重新构建最小化需要重新构建的文件。 - Mark Longairgit checkout -- whole_folder
吗? - Geo