Estoy buscando un git
comando simple que proporcione una lista bien formateada de todos los archivos que fueron parte de la confirmación dada por un hash (SHA1), sin información extraña.
Yo he tratado:
git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d
Aunque enumera los archivos, también incluye información de diferencias no deseadas para cada uno.
¿Hay otro git
comando que proporcione solo la lista que quiero, para que pueda evitar analizarlo desde la git show
salida?
git log --until 2013-05-21 --pretty="short" --name-only
con un buen efecto.n
confirmaciones anteriores hastamaster
:git diff-tree --name-status -r @{3} master
git diff --name-only master
- Para enumerar TODOS los archivos modificados en la rama actual, en comparación con la rama maestra.Respuestas:
Forma preferida (porque es un comando de plomería ; destinado a ser programático):
Otra forma (menos preferida para los scripts, porque es un comando de porcelana ; destinado a ser dirigido al usuario)
--no-commit-id
suprime la comprometen salida ID.--pretty
argumento especifica una cadena de formato vacía para evitar el cruft al principio.--name-only
argumento muestra solo los nombres de archivo que se vieron afectados (Gracias Hank). Utilice en su--name-status
lugar, si desea ver qué sucedió con cada archivo ( D electo, M odificado, A dded)-r
argumento es recurrir a subárboles.fuente
diff-tree
no funcionará al mirar la confirmación de raíz.--name-only
opción con--name-status
dará un resumen más claro.git log --name-only -n 1 <hash>
El último compromiso sería:git log --name-only -n 1 HEAD~1..HEAD
git show
es "porcelana" (destinada al usuario) ygit diff-tree
"fontanería" (destinada a ser utilizada mediante programación, por ejemplo, desde scripts). La interfaz para el primero puede cambiar con el tiempo (por lo que los mantenedores de git podrían caerse,--name-only
aunque no me imagino que lo harían ) por razones de uso, mientras que la interfaz para el segundo se mantendrá lo más estable posible por razones de compatibilidad.Si desea obtener la lista de archivos modificados:
Si desea obtener una lista de todos los archivos en una confirmación, puede usar
fuente
git ls-tree --name-only HEAD
(el parámetro <commit-ish> es obligatorio ; en este ejemplo es HEAD) funciona para mí con git versión 1.6.4.3--no-commit-id
para evitar imprimir el SHA1, así:git diff-tree --no-commit-id --name-only -r <commit-ish>
-r
/-t
opción, ¿verdad? Porque diff-tree maneja los archivos modificados y agregados. Si desea enumerar todos los archivos nuevos (agregados), usegit diff-tree -r --name-only --no-commit-id --diff-filter=A <commit-ish>
Asumiré que
gitk
no se desea para esto. En ese caso, inténtalogit show --name-only <sha>
.fuente
--name-status
.gitk
realidad es una forma decente de revisar los archivos y mostrar el archivo en el que está el diff. Por ejemplo, el código que revisa una confirmación de monstruo de un compañero.Yo personalmente uso la combinación de --stat y --oneline con el comando show :
Si no le gustan / desea las estadísticas de adición / eliminación, puede reemplazar --stat con --name -only
fuente
alias gits='git show --stat --oneline'
, a continuación,gits
por sí mismo muestra los últimos cambios (en pista), mientras quegits b24f5fb
se puede utilizar para mostrar los cambios de cualquier revisión.git config --global alias.changes 'show --stat --oneline'
. Luego puede escribirgit changes
(con un commit-ish opcional) y obtener el resultado de los primeros ejemplos anteriores.git config --global alias.changes "show --stat --oneline"
git show
también funciona para revisar los cambios escondidos: por ejemplogit show --stat --oneline stash@{1}
También puedes hacer
y puede navegar a través de varias confirmaciones, mensajes de confirmación y los archivos modificados.
Escriba q para recuperar su solicitud.
fuente
git show 5944ad2a8b5 --name-only
para enumerar el nombre de una confirmación específicaRecientemente necesitaba enumerar todos los archivos modificados entre dos confirmaciones. Así que usé este comando (también * nix específico)
Actualización : O como Ethan señala a continuación
El uso
--name-status
también incluirá el cambio (agregado, modificado, eliminado, etc.) junto a cada archivofuente
git diff --name-status START_COMMIT..END_COMMIT
entonces no necesita el seguimiento|sort | uniq
.git diff --name-only START_COMMIT..END_COMMIT
git diff --name-only START_COMMIT..END_COMMIT | grep -v -e '**.png' -e '**.xml'
. Quería una lista de cambios de código solo para un gran PR que había agregado miles de diseños PNG y XML.La forma mas simple:
git show --stat (hash)
Eso es más fácil de recordar y le dará toda la información que necesita.
Si realmente desea solo los nombres de los archivos, puede agregar la
--name-only
opción.git show --stat --name-only (hash)
fuente
Yo uso el alias cambiado con bastante frecuencia. Para configurarlo:
entonces:
Comandos similares que pueden ser útiles:
fuente
Utilizar
Esto le mostrará la identificación de confirmación, el mensaje, los archivos modificados y si se modificó, creó, agregó o eliminó. Algo de un comando todo en uno.
fuente
Usando el comando git diff estándar (también bueno para scripting):
Si desea también el estado de los archivos modificados:
Esto funciona bien con commits de fusión.
fuente
prueba este comando para el nombre y cambia el número de línea
solo mostrar nombres de archivos
para obtener el último hash de confirmación, intente este comando
última confirmación con mostrar el nombre del archivo y el estado del archivo modificar, crear o eliminar
o para todos
para obtener información más avanzada sobre el registro de git, lea este artículo
https://devhints.io/git-log-format
https://devhints.io/git-log
fuente
fuente
OKAY, hay un par de formas de mostrar todos los archivos en un commit particular ...
Para reducir la información y mostrar solo los nombres de los archivos que se comprometieron, simplemente puede agregar
--name-only
o--name-status
marcar ..., estas banderas solo le muestran los nombres de archivo que son diferentes de las confirmaciones anteriores como desee ...Entonces puede hacer
git diff
seguido--name-only
, con dos hashes de confirmación después<sha0> <sha1>
, algo como a continuación:También creo la imagen a continuación para mostrar todos los pasos a seguir en estas situaciones:
fuente
Lo uso para obtener una lista de archivos modificados entre dos conjuntos de cambios:
fuente
git diff --name-status .. | grep ^[^D] | cut -f2
Me gusta usar
fuente
También hay
git whatchanged
, que es más bajo nivel quegit log
Produce el resumen de confirmación con una lista de archivos debajo de él con sus modos y si hay agregado (
A
), eliminado (D
) o modificado (M
);Daría algo como:
Sé que esta respuesta realmente no coincide "sin información extraña", pero sigo pensando que esta lista es más útil que solo los nombres de archivo.
fuente
whatchanged
lugar de proporcionar parámetros.Me gusta esto:
fuente
A
&D
(agregar y eliminar) al revés, porque muestra la diferencia de la confirmación especificada a la confirmación anterior, en lugar de al revés. Debería sergit diff --name-status <SHA1>^ <SHA1>
.Use un comando simple de una línea, si solo desea que se cambie la lista de archivos en la última confirmación:
fuente
Enumere los archivos que cambiaron en una confirmación:
Esto no muestra mensajes de registro, nuevas líneas adicionales o cualquier otro desorden. Esto funciona para cualquier commit, no solo para el actual. No sé por qué no ha bastante ha mencionado todavía, así que estoy añadiendo la misma.
fuente
git diff SHA1^ SHA1
ygit show SHA1
.git show
también muestra el mensaje de confirmaciónMostrar el registro.
COMMIT puede estar en blanco ("") o el sha-1 o el sha-1 acortado.
Esto enumerará solo los archivos, muy útil para su posterior procesamiento.
fuente
Encontré una respuesta perfecta a esto:
Para que yo pueda saber
fuente
Una combinación de "
git show --stat
" (gracias Ryan) y un par de comandos sed deberían recortar los datos para usted:Eso producirá solo la lista de archivos modificados.
fuente
Hay un truco simple para ver como una lista de archivos, solo agregue
:
después del hash.Entonces puedes profundizar,
Si golpeas un archivo obtendrás la versión sin procesar del archivo; que a veces es lo que quieres si solo estás buscando una buena referencia o piezas clave de código (los diferenciales pueden hacer que todo sea un desastre),
El único inconveniente de este método es que no muestra fácilmente un árbol de archivos.
fuente
funciona bien para mi
fuente
Lo uso para obtener una lista de archivos modificados en commit de fusión
o
fuente
Si está utilizando el complemento oh-my-zsh y git, el atajo glg es útil.
fuente
glg
sale: mucho más. Perdón por la confusion.Solo la lista de archivos (ni siquiera el mensaje de confirmación):
Por ejemplo, abra todos los archivos modificados en su editor:
fuente
Pensé en compartir un resumen de mi alias ... también encuentro que usar 'zsh' es genial con git it chroma keys todo muy bien y te dice que quieres una rama en todo momento cambiando el símbolo del sistema.
Para aquellos que cubren desde SVN, encontrarán esto útil: (esta es una combinación de ideas de diferentes hilos, solo me doy el crédito de saber cómo usar copiar / pegar)
fuente
Esto debería funcionar:
Esto mostrará lo que no está en escena y lo que está en escena.
fuente