【发布时间】:2015-11-04 19:20:21
【问题描述】:
我正在尝试在 PowerShell 中运行以下命令:
git log --cherry-pick master...branch --format=%h | git cherry-pick -n --stdin
git log 产生一个以换行符分隔的提交哈希列表,然后我想将其传递给git cherry-pick。但是,git cherry-pick 总是抱怨:
'atal: bad revision '12abcdef
其中12abcdef 是git log 返回的第一行。请注意,以上内容不是错字 - 输出确实是这样的。
问题似乎是 PowerShell 正在将 git log 输出转换为字符串数组,然后尝试将其通过管道传递给 git cherry-pick,这会因为它不了解 PS 对象而产生问题;它只需要来自标准输入的原始文本。我猜这与我在上面看到的错误输出有关,但我不确定。
如果我通过cmd.exe 或git bash 运行相同的命令,一切都会按预期运行。我在git log 输出上尝试了各种 PS 命令,试图让它保持原始状态(join、out-string 等),但没有任何效果。
那么,有没有办法告诉 PowerShell 不理会标准输出(即让它成为“原始”),或者我做错了什么,或者我应该这样做的 PowerShell-y 方式会给出我想要的结果?
【问题讨论】:
-
管道输出到
cat -A而不是git,你会看到问题。 DOS 行尾。我不知道如何解决这个问题。 -
我个人只会做
cmd /c 'git log --cherry-pick master...branch --format=%h | git cherry-pick -n --stdin'。
标签: git powershell pipe stdin msysgit