Me di cuenta de que mientras trabajaba en uno o dos boletos, si me alejo, no estoy seguro de en qué trabajé, qué cambió, etc.
¿Hay alguna manera de ver los cambios realizados para un archivo dado antes de git add y luego git commit?
Me di cuenta de que mientras trabajaba en uno o dos boletos, si me alejo, no estoy seguro de en qué trabajé, qué cambió, etc.
¿Hay alguna manera de ver los cambios realizados para un archivo dado antes de git add y luego git commit?
Respuestas:
Usted está buscando git diff
. Dependiendo de su situación exacta, hay tres formas útiles de usarlo:
# show differences between index and working tree
# that is, changes you haven't staged to commit
git diff [filename]
# show differences between current commit and index
# that is, what you're about to commit
# --staged does exactly the same thing, use what you like
git diff --cached [filename]
# show differences between current commit and working tree
git diff HEAD [filename]
Funcionará de forma recursiva en directorios, y si no se proporcionan rutas, muestra todos los cambios.
git add -p
es una alternativa para inspeccionar todos los archivos.
git diff --staged [filename]
su respuesta principal, ya que es una situación que se necesita con mayor frecuencia.
Uso git-diff
:
git diff yourfile
Para mí, git add -p
la forma más útil (¿y con la intención, creo, de los desarrolladores de git?) De revisar todos los cambios no organizados (muestra la diferencia para cada archivo), elegir un buen conjunto de cambios que deberían ir con un commit, luego cuando tenga organizó todo eso, luego use git commit
y repita para la próxima confirmación. Luego puede hacer que cada confirmación sea un conjunto de cambios útil o significativo, incluso si se llevaron a cabo en varios archivos. También sugeriría crear una nueva rama para cada boleto o actividad similar, y cambiar entre ellas usando checkout
(quizás usando git stash
si no desea comprometerse antes de cambiar), aunque si está haciendo muchos cambios rápidos, esto puede ser un dolor. No te olvides de unirte a menudo.
Mostrar cambios entre el árbol de trabajo y el índice o un árbol, cambios entre el índice y un árbol, cambios entre dos árboles o cambios entre dos archivos en el disco.
Recuerda, estás cometiendo cambios , no archivos.
Por esta razón, es muy raro que no use git add -p
(o el equivalente de magit) para agregar mis cambios.
git diff <path>/filename
La ruta puede ser la ruta completa del sistema hasta el archivo o
si está en el proyecto, pegue la ruta del archivo modificado también
para los archivos modificados con el uso de la ruta:git status
Bueno, mi caso cuando no quieres preocuparte por la lista de archivos. Solo muéstrales a todos.
Cuando ya corriste git add
con tu lista de archivos:
$ git diff --cached $(git diff --cached --name-only)
En versiones más recientes de git
, puede usar --staged
también, que es sinónimo de --cached
.
Lo mismo se puede usar para no haber agregado archivos pero sin --cached
opción.
$ git diff $(git diff --name-only)
Alias de comando Git para la opción "en caché":
$ git config --global alias.diff-cached '!git diff --cached $(git diff --cached --name-only)'
Vaya a su respectivo repositorio de git, luego ejecute el siguiente comando:
nombre de archivo git diff
Se abrirá el archivo con los cambios marcados, presione la tecla Intro / Entrar para desplazarse hacia abajo.
El nombre de archivo PS debe incluir la ruta completa del archivo o, de lo contrario, puede ejecutar sin la ruta completa del archivo yendo al directorio / carpeta correspondiente del archivo
También puede usar un editor de texto compatible con git. Muestran colores en las líneas que se han modificado, otro color para líneas agregadas, otro color para líneas eliminadas, etc.
Un buen editor de texto que hace esto es GitHub's Atom 1.0 .
[filename]
indican un argumento opcional.) Con el*
que está dejando que el shell enumere todos los archivos, por lo que si está en un subdirectorio solo obtendrá cosas en ese subdirectorio (no todo el repositorio), y usted ' Echaré de menos los cambios en los archivos ocultos.