链接 git clean (Porcelain) 命令
Chaining git clean (Porcelain) command
我正在尝试对一些未跟踪的文件执行 git 清理。我无意中输入了以下命令:
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
、y
和 z
,并且您要排除 x
.
$ git clean -dn | grep -v x
Would remove y
Would remove z
将此输出直接连接到 xargs 而不省略“将删除”部分是错误的并且会导致 git clean 中断。
现在的问题是:为什么将此输出直接连接到 git clean 它仍然有效?
- “前者有效”:它的行为与
git clean -df <no extra args>
完全相同,它会清除 所有 文件,而不仅仅是您想要包含的文件...
- “后者没有”:[edit] 运行 它在我的机器上,“有效”(需要注意的是
grep
实际上会匹配完整的消息而不是文件名,因此 运行 grep -v Would
例如排除所有行,如果输出为空,则返回 git clean -df
再次删除所有而不是什么....)
你在你的案例中发现了什么错误?
我正在尝试对一些未跟踪的文件执行 git 清理。我无意中输入了以下命令:
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
、y
和 z
,并且您要排除 x
.
$ git clean -dn | grep -v x
Would remove y
Would remove z
将此输出直接连接到 xargs 而不省略“将删除”部分是错误的并且会导致 git clean 中断。
现在的问题是:为什么将此输出直接连接到 git clean 它仍然有效?
- “前者有效”:它的行为与
git clean -df <no extra args>
完全相同,它会清除 所有 文件,而不仅仅是您想要包含的文件... - “后者没有”:[edit] 运行 它在我的机器上,“有效”(需要注意的是
grep
实际上会匹配完整的消息而不是文件名,因此 运行grep -v Would
例如排除所有行,如果输出为空,则返回git clean -df
再次删除所有而不是什么....)
你在你的案例中发现了什么错误?