ver regresar pendientes modificados log eliminar commits cambios archivos archivo anterior git git-show

git - regresar - ¿Cómo listar todos los archivos en un commit?



ver cambios en un archivo git (27)

Encontré una respuesta perfecta a esto:

git show --name-status --oneline <commit-hash>

Para que yo pueda saber

which files were just modified M Which files were newly added , A Which files were deleted , D

Estoy buscando un comando git simple que proporcione una lista bien formateada de todos los archivos que formaron 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 deseada para cada uno.

¿Hay otro comando de git que proporcione solo la lista que quiero, de modo que pueda evitar analizarla desde la salida de git show ?


Esto debería funcionar:

git status

Esto mostrará lo que no está en escena y lo que está en escena.


Hay un truco simple para ver como una lista de archivos, solo agregue : después del hash.

git show 9d3a52c474:

A continuación, puede perforar,

git show 9d3a52c474:someDir/someOtherDir

Si golpea un archivo obtendrá la versión en bruto del archivo; que a veces es lo que desea si solo está buscando una buena referencia o piezas clave de código (las diferencias pueden hacer que todo sea un desastre),

git show 9d3a52c474:someDir/someOtherDir/somefile

El único inconveniente de este método es que no muestra fácilmente un árbol de archivos.


Intenta este comando para nombre y cambios número de línea

git show --stat <commit-hash>

solo mostrar nombres de archivos

git show --stat --name-only <commit-hash>

para obtener el último hash de confirmación, entonces intente este comando

git log -1 o para todos los git log


La forma mas simple:

git show --stat (hash)

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 opción --name-only .

git show --stat --name-only (hash)


Listar los archivos que cambiaron en un commit:

git diff --name-only SHA1^ SHA1

Esto no muestra mensajes de registro, nuevas líneas adicionales o cualquier otro desorden. Esto funciona para cualquier compromiso, no solo el actual. No estoy seguro de por qué no se ha mencionado todavía, así que lo estoy agregando.


Lo uso para obtener la lista de archivos modificados entre dos conjuntos de cambios:

git diff --name-status <SHA1> <SHA2> | cut -f2


Me gusta esto:

git diff --name-status <SHA1> <SHA1>^


Me gusta usar

git show --stat <SHA1>^..<SHA2>


Mostrar el registro.

COMMIT puede estar en blanco ("") o el sha-1 o el sha-1 acortado.

git log COMMIT -1 --name-only

Esto mostrará una lista de los archivos, muy útil para su posterior procesamiento.

git log COMMIT -1 --name-only --pretty=format:"" | grep "[^/s]"


Pensé que compartiría un resumen de mi alias ... también me parece muy útil usar ''zsh'' con las claves de git it chroma todo muy bien y le dice que quiere que las sucursales estén en todo momento cambiando el símbolo del sistema.

Para los que cubren desde SVN, encontrará esto útil: (esta es una combinación de ideas de diferentes subprocesos, solo tengo el mérito de saber cómo usar copiar / pegar)

.gitconfig: ls = log --graph --pretty=format:''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset'' --abbrev-commit --date=relative --name-status >>git ls * 99f21a6 - (HEAD -> swift) New Files from xcode 7 (11 hours ago) Jim Zucker| | A icds.xcodeproj/project.pbxproj | A icds.xcodeproj/project.xcworkspace/contents.xcworkspacedata | A icds/AppDelegate.m | A icds/Assets.xcassets/AppIcon.appiconset/Contents.json * e0a1bb6 - Move everything to old (11 hours ago) Jim Zucker| | D Classes/AppInfoViewControler.h | D Classes/AppInfoViewControler.m | D Classes/CurveInstrument.h .gitconfig: lt = log --graph --pretty=format:''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset'' --abbrev-commit --date=relative >>git lt * 99f21a6 - (HEAD -> swift) New Files from xcode 7 (11 hours ago) Jim Zucker * e0a1bb6 - Move everything to old (11 hours ago) Jim Zucker * 778bda6 - Cleanup for new project (11 hours ago) Jim Zucker * 7373b5e - clean up files from old version (11 hours ago) Jim Zucker * 14a8d53 - (tag: 1.x, origin/swift, origin/master, master) Initial Commit (16 hours ago) Jim Zucker .gitconfig lt = log --graph --pretty=format:''%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)%an%Creset'' --abbrev-commit --date=relative >> git lt commit 99f21a61de832bad7b2bdb74066a08cac3d0bf3c Author: Jim Zucker <[email protected]> Date: Tue Dec 1 22:23:10 2015 -0800 New Files from xcode 7 A icds.xcodeproj/project.pbxproj A icds.xcodeproj/project.xcworkspace/contents.xcworkspacedata commit e0a1bb6b59ed6a4f9147e894d7f7fe00283fce8d Author: Jim Zucker <[email protected]> Date: Tue Dec 1 22:17:00 2015 -0800 Move everything to old D Classes/AppInfoViewControler.h D Classes/AppInfoViewControler.m D Classes/CurveInstrument.h D Classes/CurveInstrument.m


Personalmente uso la combinación de --stat y --oneline con el comando show :

git show --stat --oneline HEAD git show --stat --oneline b24f5fb git show --stat --oneline HEAD^^..HEAD

Si no le gustan / no desea las estadísticas de adición / eliminación, puede reemplazar --stat con --name -only

git show --name-only --oneline HEAD git show --name-only --oneline b24f5fb git show --name-only --oneline HEAD^^..HEAD


Recientemente tuve que listar todos los archivos cambiados entre dos confirmaciones. Así que usé este comando (también * específico de nix)

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

Actualización : O como Ethan señala a continuación

git diff --name-only START_COMMIT..END_COMMIT

El uso de --name-status también incluirá el cambio (agregado, modificado, eliminado, etc.) al lado de cada archivo

git diff --name-status START_COMMIT..END_COMMIT


Si desea obtener la lista de archivos modificados:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Si desea obtener una lista de todos los archivos en una confirmación, puede utilizar

git ls-tree --name-only -r <commit-ish>


Solo asumiré que gitk no es deseado para esto. En ese caso, pruebe git show --name-only <sha> .


También hay git whatchanged , que es más bajo que el git log

NAME git-whatchanged - Show logs with difference each commit introduces

Envía el resumen de confirmación con una lista de archivos debajo con sus modos y si se agregaron ( A ), eliminaron ( D ) o modificaron ( M );

$ git whatchanged f31a441398fb7834fde24c5b0c2974182a431363

Daría algo como:

commit f31a441398fb7834fde24c5b0c2974182a431363 Author: xx <[email protected]> Date: Tue Sep 29 17:23:22 2015 +0200 added fb skd and XLForm :000000 100644 0000000... 90a20d7... A Pods/Bolts/Bolts/Common/BFCancellationToken.h :000000 100644 0000000... b5006d0... A Pods/Bolts/Bolts/Common/BFCancellationToken.m :000000 100644 0000000... 3e7b711... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.h :000000 100644 0000000... 9c8a7ae... A Pods/Bolts/Bolts/Common/BFCancellationTokenRegistration.m :000000 100644 0000000... bd6e7a1... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.h :000000 100644 0000000... 947f725... A Pods/Bolts/Bolts/Common/BFCancellationTokenSource.m :000000 100644 0000000... cf7dcdf... A Pods/Bolts/Bolts/Common/BFDefines.h :000000 100644 0000000... 02af9ba... A Pods/Bolts/Bolts/Common/BFExecutor.h :000000 100644 0000000... 292e27c... A Pods/Bolts/Bolts/Common/BFExecutor.m :000000 100644 0000000... 827071d... A Pods/Bolts/Bolts/Common/BFTask.h ...

Sé que esta respuesta no coincide realmente "sin información extraña", pero sigo pensando que esta lista es más útil que los nombres de archivo.


Tambien puedes hacer

git log --name-only

y puede navegar a través de varios confirmaciones, mensajes de confirmación y los archivos modificados.

Escribe q para recuperar tu aviso.


Una combinación de " git show --stat " (gracias Ryan) y un par de comandos sed deben recortar los datos por ti:

git show --stat <SHA1> | sed -n "/ [/w]/*|/p" | sed "s/|./*$//"

Eso producirá sólo la lista de archivos modificados.


Use un comando simple de una línea, si solo quiere que se cambie la lista de archivos en el último compromiso:

git diff HEAD~1 --name-only


Utilizar

git log --name-status

Esto le mostrará el ID de compromiso, el mensaje, los archivos modificados y si se modificó, creó, agregó o eliminó. Algo de un comando todo en uno.


Yo uso un alias cambiado con bastante frecuencia. Para configurarlo:

git config --global alias.changed ''show --pretty="format:" --name-only''

entonces:

git changed (lists files modified in last commit) git changed bAda55 (lists files modified in this commit) git changed bAda55..ff0021 (lists files modified between those commits)

Comandos similares que pueden ser útiles:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D) git show --name-only


Modo preferido (porque es un comando de plomería ; destinado a ser programático):

$ git diff-tree --no-commit-id --name-only -r bd61ad98 index.html javascript/application.js javascript/ie6.js

Otra forma (menos preferida para las secuencias de comandos, porque es un comando de porcelana ; destinado a ser orientado al usuario)

$ git show --pretty="" --name-only bd61ad98 index.html javascript/application.js javascript/ie6.js

  • El --no-commit-id suprime la salida del ID de commit.
  • El argumento --pretty especifica una cadena de formato vacía para evitar el cruce al principio.
  • El argumento --name-only muestra solo los nombres de archivo que se vieron afectados (Gracias Hank).
  • El argumento -r es recursionar en sub-árboles

OK, hay un par de formas de mostrar todos los archivos en una confirmación en particular ...

Para reducir la información y mostrar solo los nombres de los archivos confirmados, simplemente puede agregar - --name-only o - --name-status indicador de --name-status ..., estos indicadores solo le muestran los nombres de archivo que son diferentes de los confirmaciones anteriores a medida que usted querer...

Así que puedes hacer git diff seguido de --name-only , con dos hashes de confirmación después de <sha0> <sha1> , algo como a continuación:

git diff --name-only 5f12f15 kag9f02

También creo la imagen de abajo para mostrar todos los pasos a seguir en estas situaciones:


Usando el comando estándar git diff (también es bueno para scripting):

git diff --name-only <sha>^ <sha>

Si desea también el estado de los archivos modificados:

git diff --name-status <sha>^ <sha>

Esto funciona bien con las combinaciones de combinación.


$ git log 88ee8^..88ee8 --name-only --pretty="format:"


git show --name-only commitCodeHere


git show HEAD@{0}

funciona bien para mi