2010-11-22 14 views

Antwort

23

Der Ausgang des git status --porcelain ist eine gute Möglichkeit, Einzeiler und Skripte für Aufgaben wie diese zu bauen:

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

genial. Vielen Dank!! Sieht so aus, als müsste ich etwas Grep, Sed und Awk lernen. – Jacko

+1

@Jacko: Definitiv handliche Dinge. Das hättest du auch mit sed leicht machen können: 'sed -n '/^D/s/^ D // p'. – Cascabel

+0

Mein vorheriger Kommentar fehlt das schließende einfache Zitat. – Cascabel

-1

Weitere Informationen finden Sie im Abschnitt "Staging-Datei nicht mehr bereitstellen" in this book.

+0

Link geht an einen lustigen Ort jetzt scheint es, aber das Buch ist hilfreich. – hiwaylon

1

Wenn Ihr Weg-/Dateinamen aus git status space Zeichen zurückgegeben, der Anruf an awk

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

Für den Fall, jemand anderes Anwendungen: kann die gesamte (zitiert) Pfad/Dateiname inklusive Leerzeichen enthalten modifiziert werden git mit PowerShell, hier ist eine Powershell-Version von @ Jefromi ausgezeichnete Antwort:

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