假设我有一个包含数百个文件的目录。我修改了其中几个,但之后我意识到我的改变很糟糕。如果我这样做:
git checkout whole_folder
然后一切都被检出,我必须重新编译一切。有没有办法让checkout只影响修改过的文件,还是我需要分别对每个文件运行checkout
?
答案 0 :(得分:16)
试试这个:
$ git checkout `git ls-files -m`
-m仅列出修改后的文件。
答案 1 :(得分:3)
但是
git checkout -- $(git ls-files -m)
还会检出已删除的文件。
如果您只想检查修改过的文件,那么我可以使用
git checkout -- $(git status -uno | grep --colour=never '#' | awk '{ print $2 $3 }' | grep --colour=never ^modified: | cut -c10-)
答案 2 :(得分:2)
你正在做的是正确的,但你可能想要添加一个明确的--
,以防你的目录名与分支名相同,即:
git checkout -- whole_folder
git只会更新它实际需要更改的文件的时间戳,因此如果基于依赖项的构建工具正确使用mtimes,则应重建最小安全文件数。如果您看到不同的行为,那将是一个错误。