Esto a menudo me pasa a mí:
Estoy trabajando en un par de cambios relacionados al mismo tiempo en el transcurso de un día o dos, y cuando es hora de comprometerse, termino olvidando lo que cambió en un archivo específico. (Esto es solo un repositorio personal de git, así que estoy de acuerdo con tener más de una actualización en una confirmación).
¿Hay alguna forma de obtener una vista previa de los cambios entre mi archivo local, que está a punto de registrarse, y la última confirmación para ese archivo?
Algo como:
git diff --changed /myfile.txt
Y imprimiría algo como:
line 23
(last commit): var = 2+2
(current): var = myfunction() + 2
line 149
(last commit): return var
(current): return var / 7
De esta manera, pude ver rápidamente lo que había hecho en ese archivo desde la última vez que se registró.
git add -p
. Revise cada cambio, apruebe selectivamente los cambios a la etapa, cancele en cualquier momento si cambia de opinión e incluso edite un fragmento en línea. Yo nuncagit add
sin eso.q
git config --global diff.noprefix true
.le mostrará los cambios que agregó a su árbol de trabajo desde la última confirmación. Se mostrarán todos los cambios (organizados o no).
fuente
Para verificar las diferencias locales:
o puede usar una herramienta de diferencias (en caso de que desee revertir algunos cambios):
Para usar de manera
git difftool
más eficiente, instale y use su herramienta GUI favorita, como Meld, DiffMerge u OpenDiff.Nota: También puede usar
.
(en lugar de nombre de archivo) para ver los cambios de directorio actuales.Para verificar los cambios por cada línea, use:
git blame
que mostrará qué línea se confirmó en qué confirmación.Para ver el archivo real antes de la confirmación (dónde
master
está su rama), ejecute:fuente
¿Intentó
-v
(o--verbose
) la opción paragit commit
? Agrega la diferencia de la confirmación en el editor de mensajes.fuente
Changes not staged for commit:
que puede hacer que el editor de confirmación sea más limpio?Otra técnica a considerar si desea comparar un archivo con la última confirmación que es más pedante:
La ventaja de esta técnica es que también se puede comparar con el penúltimo commit con:
y el anterior:
También puede sustituir '~' por el carácter de intercalación '^' y 'nombre de su rama' por 'maestro' si no está en la rama maestra.
fuente
Creo que este es el caso de uso perfecto que garantiza una GUI. - Aunque entiendo totalmente que también se puede lograr lo suficientemente bien dentro de la línea de comando.
Personalmente, cada compromiso mío, lo hago desde el git-gui. En el que puedo hacer múltiples confirmaciones atómicas con líneas / trozos separados si tiene sentido hacerlo.
Gut Gui permite ver los diferenciales en una interfaz de color bien formateada, es bastante ligera. Parece que esto es algo que también deberías pagar.
fuente
git bisect
esa que no son realmente accesibles.tig
"interfaz de modo de texto para Git".En macOS, vaya al directorio raíz de git e ingrese
git diff *
fuente
La mejor manera que encontré, además de usar una GUI dedicada de compromiso, es usar
git difftool -d
: esto abre su herramienta de diferencias en el modo de comparación de directorios, comparando HEAD con la carpeta sucia actual.fuente
Esto muestra una comparación usando la ventana de hendidura VI en la terminal.
fuente