我試圖在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