2010-11-22 10 views

答えて

23

git status --porcelainの出力は、このようなタスクのためのワンライナーとスクリプトを構築するための素晴らしい方法です:git statusから返さ

git status --porcelain | awk '$1 == "D" {print $2}' | xargs git reset HEAD 
+0

素晴らしい。ありがとう!!私はいくつかのgrep、sedとawkを学ぶ必要があるように見えます。 – Jacko

+1

@ジャコ:確かに便利なもの。 'sed -n '/^D/s/^ D // p'でもsedで簡単にこれを行うことができました。 – Cascabel

+0

私の前のコメントには一重引用符がありません。 – Cascabel

-1

「ステージングされたファイルのステージング解除」のセクションを参照してください。in this book

+0

リンクは、それはそう今面白い場所に行くが、本は便利です。 – hiwaylon

1

場合は、あなたのpath- /ファイル名は space文字を含む、awkへの呼び出しスペースを含むパス/ファイル名(引用された) 全体を含むように変更することができます。

git status --porcelain|awk '$1 == "D" {print substr($0, index($0,$2))}'|xargs git reset HEAD 
0

念の誰の用途にPowerShellを使用しgitのは、ここでの@ jefromiの優れた解答のPowerShellのバージョンである:

git status --porcelain | where { $_.StartsWith(" D") } | foreach-object { git reset HEAD $_.replace(" D ", "") }