0

我试图对一些未跟踪的文件执行 git clean 。我无意中输入了以下命令:

git clean -dn | grep -v <files_to_exclude> | git clean -df

请注意,该行似乎缺少一个xargs. 也就是说,我通常会像这样编写前面的命令:

git clean -df | grep -v <files_to_exclude> | xargs git clean -df --

话虽如此,前者有效,后者无效!是的,我知道我可以使用:

git clean -df --exclude=<files_to_exclude>

那时我不知道排除选项。

只是为了确保您拥有正确的图片,假设您有三个未跟踪的文件x, yz并且您要排除x.

$ git clean -dn | grep -v x
Would remove y
Would remove z

将这个输出直接连接到 xargs 而不省略“将删除”部分是错误的并且会导致 git clean 中断,这是有道理的。

现在的问题是:为什么它可以直接将此输出连接到 git clean 它仍然有效?

4

1 回答 1

0
  • “前者工作”:它的行为完全一样git clean -df <no extra args>,它会清理所有文件,而不仅仅是你想要包含的文件......
  • “后者没有”:[编辑]在我的机器上运行它,“它有效”(有一个很大的警告,它grep实际上会匹配完整的消息而不是文件名,所以运行grep -v Would例如排除所有行,如果输出是空的,你依靠git clean -df它再次删除所有而不是什么......)
    你在你的情况下看到什么错误?
于 2020-08-05T12:40:27.803 回答