如果我删除了一个文件,我可以用以下git命令还原它:
git checkout filename
如果我想恢复所有已删除的文件,我可以使用以下命令列出它们:
git diff --diff-filter=D --name-only
我想做的是恢复它们,但是
git diff --diff-filter=D --name-only | git checkout
无法正常工作,它只是将列表重复输出到标准输出,而且似乎git checkout没有收到任何输入。对于| git checkout HEAD --等也是如此。
我已经在Windows命令提示符,Powershell和Git Bash中尝试过这个命令,并且每次都得到相同的结果。
如何正确地将输入导入到git checkout中?
xargs
的替代方法:git checkout -- $(git diff --diff-filter=D --name-only | tr '\n' ' ')
。该命令将筛选出被删除的文件,并将其传递给git checkout
命令,以从工作目录中删除这些文件。 - Antonio Pérezxargs
依赖的好方法(尽管它需要tr
或其他字符串处理工具,这也可能是一个弱点)。对于Antonio的评论点赞。 - Willem Van Onsem--relative
参数。 - Willem Van Onsem