2010-11-22 37 views

Respuesta

23

La salida de git status --porcelain es una gran manera de construir de una sola línea y scripts para tareas como esto:

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

impresionante. ¡¡Gracias!! Parece que necesito aprender algo de grep, sed y awk. – Jacko

+1

@Jacko: Definitivamente cosas útiles. Podrías haber hecho esto fácilmente con sed: 'sed -n '/^D/s/^ D // p'. – Cascabel

+0

En mi comentario anterior falta la comilla simple de cierre. – Cascabel

-1

Consulte la sección 'Desestabilizar un archivo en etapas' in this book.

+0

El enlace va a un lugar divertido ahora parece, pero el libro es útil. – hiwaylon

1

En caso de que su camino-/nombres de archivo regresó de git status contienen space caracteres, la llamada a awk puede ser modificado para incluir las entera (citado) ruta/nombre de archivo con espacios incluidos:

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

por si alguien lo demás usos git con PowerShell, aquí hay una versión Powershell de la excelente respuesta de @ jefromi:

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