【发布时间】:2020-05-28 21:22:28
【问题描述】:
当我打开 git bash 并执行以下命令时,我没有问题!
git log --no-renames --after=’2020-01-01’ --diff-filter=D --summary | grep 'delete mode' > log.txt
但是当我尝试执行此操作时:
GitTasks.Git(@"log --no-renames --after=’2020-01-01’ --diff-filter=D --summary | grep 'delete mode' > files.20.exclude", @"D:\folder\myproject");
我得到了这些错误:
fatal: ambiguous argument '|': unknown revision or path not in the working tree.
fatal: ambiguous argument '>': unknown revision or path not in the working tree.
我必须做什么才能得到相同的结果?
【问题讨论】:
-
“管道”
|和后面的所有内容都不是任何 git 命令的一部分,因此将其交给 GitTasks.Git 是没有意义的。 -
管道 (
|) 和重定向 (>) 是 shell (Bash) 的功能。它解析命令行,识别要运行的命令,然后运行 git及其参数列表(git和|之间的所有内容),使用一个参数 (delete mode) 运行grep,连接输出流git到grep(|) 的输入流和grep到文件log.txt(>) 的输出流。当您使用GitTasks.Git时,不涉及 shell。字符串被解析为片段(由空格分隔),所有片段都作为参数提供给 Git。没有外壳可以实现上述魔法。
标签: git nuke-build