tipos tag remove qué practices existen etiquetas crear commits best git whitespace

tag - git-add solo los cambios de espacio en blanco?



qué tipos de etiquetas existen en git (3)

El estilo de mi proyecto dice que es recortar espacios en blanco, pero esto hace que las diferencias sean muy, muy desordenadas. Me gusta consolidarlos en un solo compromiso antes de confirmar el arreglo real.

Esto está estrechamente relacionado con Agregar solo cambios que no sean espacios en blanco , pero está preguntando exactamente lo contrario:

¿Hay alguna manera de agregar solo los cambios de espacio en blanco al área de preparación?


Aquí hay una solución de bash que funcionó para mí.

for fname in $(git diff --name-only --diff-filter=ACMR --full-index HEAD) do diff=$(git diff -w --ignore-blank-lines --exit-code $fname) if [ $? -eq 0 ]; then echo "only whitespace diff on $fname ! adding to git..." git add $fname else echo "diff on $fname!" fi done


Puedes probar el siguiente "truco":

git add -A git diff --cached -w | git apply --cached -R

Básicamente, esto agrega todo al índice, luego elimina todos los cambios que afectan más que los espacios en blanco.


Tuve que combinar y modificar la respuesta de Tobias y nneonneo para cometer el espacio en blanco de múltiples archivos con grandes diferencias. Asegúrese de ejecutar esto desde la raíz de su repositorio.

git add -A for FILE_NAME in $(git --no-pager diff --name-only --diff-filter=ACMR --full-index HEAD) do git --no-pager diff --cached -w $FILE_NAME | git apply --cached -R done

git --no-pager evita el desplazamiento predeterminado que utiliza git para mostrar grandes cantidades de contenido. El bucle --name-only permite que el comando funcione en varios archivos.