Pensé que esta pregunta (del título) podría ser sobre el uso de git diff en dos archivos que no están necesariamente en un repositorio. Descubrí que la marca --no-index es para eso, por ejemplo git diff --no-index --word-diff old_file.txt new_file.txt(--word-diff resalta los cambios por palabra, no solo por línea, lo cual es muy útil para texto largo).
Pat
Respuestas:
135
Especifique las rutas explícitamente:
git diff HEAD:full/path/to/foo full/path/to/bar
Consulte la --find-renamesopción en los git-diffdocumentos. .
Quiero mencionar que puede comparar dos archivos cualquiera usando git diff <path> <path>incluso si no están en un repositorio de git.
mitenka
1
@mitenka No creo que eso sea correcto. Si observa git diff --help, verá que los únicos patrones compatibles con dos archivos es git diff [<options>] --no-index [--] <path> <path>. git diff a bsolo coincide con patrones de confirmación, no archivos.
Doug
@Doug Aquí está la cita del comando de ayuda que mencionó, git-scm.com/docs/git-diff : Muestra [...] cambios entre dos archivos en el disco.
Mitenka
@mitenka dice la ayuda, a menos que use '--no-index', no compara archivos; su comentario debe ser una respuesta separada; no es cierto y no es relevante para esta respuesta.
Doug
1
@Doug Gracias por tu opinión. Aquí está la cita de la ayuda a la que hace referencia: Puede omitir la --no-indexopción cuando ejecuta el comando en un árbol de trabajo controlado por Git y al menos uno de los puntos de ruta fuera del árbol de trabajo, o cuando ejecuta el comando fuera de un árbol de trabajo controlado por Git .
mitenka
77
Creo que usar --no-indexes lo que estás buscando:
git diff [<options>]--no-index [--]<path><path>
como se menciona en el manual de git:
Este formulario es para comparar las dos rutas dadas en el sistema de archivos. Puede
omitir la --no-indexopción cuando ejecuta el comando en un árbol de trabajo controlado por Git y al menos uno de los puntos de ruta fuera del árbol de trabajo, o cuando ejecuta el comando fuera de un árbol de trabajo controlado por Git.
@swe, esta es definitivamente una respuesta útil, pero el OP indicó específicamente que el archivo está en HEAD, lo que significa que está en un índice git. La respuesta aceptada aborda directamente la pregunta. También la respuesta aceptada tuvo una ventaja de 6 años;)
Michael Delgado
3
Puede que esto no haya ayudado a OP, pero era exactamente lo que estaba buscando.
thislooksfun
Esto responde a la pregunta publicada por el título, si se agachaba por esto en la web.
Merlín
3
Si está usando tortoise git, puede hacer clic con el botón derecho en un archivo y obtener una diferencia: Haga clic con el botón derecho en el primer archivo y, a través del submenú de tortoisegit, seleccione "Diferenciar más tarde". Luego, en el segundo archivo, también puede hacer clic con el botón derecho en este. , vaya al submenú tortoisegit y luego seleccione "Diff with yourfilenamehere.txt"
Usando PhpStorm, simplemente copio el código de confirmación anterior y lo comparo con la versión actual usando la herramienta incorporada "comparar con el portapapeles".
git diff --no-index --word-diff old_file.txt new_file.txt
(--word-diff resalta los cambios por palabra, no solo por línea, lo cual es muy útil para texto largo).Respuestas:
Especifique las rutas explícitamente:
git diff HEAD:full/path/to/foo full/path/to/bar
Consulte la
--find-renames
opción en losgit-diff
documentos. .Crédito: twaggs .
fuente
git diff <path> <path>
incluso si no están en un repositorio de git.git diff --help
, verá que los únicos patrones compatibles con dos archivos esgit diff [<options>] --no-index [--] <path> <path>
.git diff a b
solo coincide con patrones de confirmación, no archivos.--no-index
opción cuando ejecuta el comando en un árbol de trabajo controlado por Git y al menos uno de los puntos de ruta fuera del árbol de trabajo, o cuando ejecuta el comando fuera de un árbol de trabajo controlado por Git .Creo que usar
--no-index
es lo que estás buscando:como se menciona en el manual de git:
fuente
Si está usando tortoise git, puede hacer clic con el botón derecho en un archivo y obtener una diferencia: Haga clic con el botón derecho en el primer archivo y, a través del submenú de tortoisegit, seleccione "Diferenciar más tarde". Luego, en el segundo archivo, también puede hacer clic con el botón derecho en este. , vaya al submenú tortoisegit y luego seleccione "Diff with yourfilenamehere.txt"
fuente
Usando PhpStorm, simplemente copio el código de confirmación anterior y lo comparo con la versión actual usando la herramienta incorporada "comparar con el portapapeles".
fuente