我试图在PowerShell中运行以下命令:防止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对象;它只是希望stdin的原始文本。我猜这与我上面看到的损坏输出有关,但我不确定。
如果我通过cmd.exe
或git bash
运行相同的命令,一切都按预期工作。我试过git log
输出上的各种PS命令,试图让它保持原始状态(join
,out-string
等),但没有任何工作。所以,有没有办法告诉PowerShell单独离开stdout(即让它成为“原始”),或者我做错了什么,或者是否有PowerShell-y的方式,我应该这样做,这将会给我想要的结果?
将输出输出到'cat -A'而不是'git',你会看到问题。 DOS行结尾。我不知道如何解决这个问题。 –
个人我只会'cmd/c'git log --cherry-pick master ... branch --format =%h | git cherry-pick -n --stdin''。 – PetSerAl