如果我删除一个文件,我可以用git恢复它:
git checkout filename
Run Code Online (Sandbox Code Playgroud)
如果我想还原所有已删除的文件,我可以列出:
git diff --diff-filter=D --name-only
Run Code Online (Sandbox Code Playgroud)
我当时想要做的就是恢复它们,但是
git diff --diff-filter=D --name-only | git checkout
Run Code Online (Sandbox Code Playgroud)
不起作用,它只重复列表到标准输出,并且git checkout似乎没有收到任何输入.同上| git checkout HEAD - 依此类推.
我在Windows命令提示符,Powershell和Git Bash中尝试了这一点,每次都有相同的结果.
如何正确管道输入到git checkout?
Wil*_*sem 12
你不能使用管道.但是你可以使用Unix的xargs
:
git diff --diff-filter=D --name-only | xargs git checkout
Run Code Online (Sandbox Code Playgroud)
xargs
是一个从stdin读取并将行作为参数放在其自己的参数旁边并调用结果的工具.因此,如果git diff
生成一条线a
和一条线b
,xargs git checkout
将 - 至少在概念上 - 生成该线git checkout a b
并将其称为命令.