如何在git checkout上仅恢复修改后的文件?

Geo*_*Geo 9 git

假设我有一个包含数百个文件的目录.我修改了其中几个,但之后我意识到我的改变很糟糕.如果我做:

git checkout whole_folder
Run Code Online (Sandbox Code Playgroud)

然后一切都会再次检出,我必须重新编译所有内容.有没有办法让checkout只影响修改过的文件,还是我需要checkout分别在每个文件上运行?

hol*_*eek 17

试试这个:

$ git checkout `git ls-files -m`
Run Code Online (Sandbox Code Playgroud)

-m仅列出已修改的文件.


The*_*Fox 6

git checkout -- $(git ls-files -m)
Run Code Online (Sandbox Code Playgroud)

还签出已删除的文件。

如果您只想签出修改后的文件,这对我有用:

git checkout -- $(git status -uno | grep --colour=never '#' | awk '{ print $2 $3 }' | grep --colour=never ^modified: | cut -c10-)
Run Code Online (Sandbox Code Playgroud)