Git: 1.Enumere todos los archivos en una rama, 2.Compare archivos de diferentes ramas

88
  1. Buscando un comando como ls -Ro dir/sque pueda enumerar todos los archivos en una confirmación / rama.
  2. ¿Existe algún comando que pueda comparar dos archivos de diferentes ramas?
Carrera
fuente

Respuestas:

136
  1. git ls-tree -r --name-only <commit>(donde en lugar de <commit>puede haber <branch>).
    Es posible que desee utilizar también la -topción que enumera los subdirectorios antes de descender a ellos
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    o si desea comparar el mismo archivogit diff <branchA> <branchB> -- <file>
Jakub Narębski
fuente
4
Si desea enumerar un directorio específico, puede agregar dos puntos seguidos de la ruta a la rama, es decir: git ls-tree -r --name-only master: directory / path / name
miller the gorilla
25

Para comparar el mismo archivo de diferentes ramas:

git diff branch_1..branch_2 file.txt

Para enumerar todos los archivos en un objeto de árbol:

git ls-tree -r branch
Dan Loewenherz
fuente
Recibo "git: 'ls' no es un comando de git. Consulte 'git --help'". y estoy usando git v 2.19.0.
Andrew S
1
No es solo ls, te has olvidado -treedel final :)
Dan Loewenherz
Ah, asumí que era ls -tree. Pensé que el árbol era un interruptor. Gracias.
Andrew S
24

Para enumerar todos los archivos agregados en la nueva rama

git diff --name-only branch1 master
Peter Mansell
fuente
4
Esto enumera solo los nombres de todos los archivos que han cambiado, no solo los archivos nuevos.
Meredith
2

A partir de Git v2.1.0 [15/08/14]

Para enumerar, puede usar git ls-filespara enumerar todos los archivos de forma recursiva en el índice actual / directorio de trabajo. Puede consultar Git-SCM Docs / git-ls-files o escribir man git-ls-filessi ha instalado Git y tiene páginas de manual disponibles.

Tiene buenas opciones para mostrar los archivos de diferentes maneras, como cached, staged, deleted, modified, ignoredo otherspara el sin seguimiento. También admite patrones coincidentes. Teniendo también un --debugarg, puede enumerar fácilmente creation time, modification time, inode id, owner & group id, sizey flagspara los archivos.


Para la diferencia de dos ramas, simplemente use git diff <branch> <other branch>como se indica en otras respuestas.

Berkant Ipek
fuente
2

Listar archivos en la rama con git ls-files

  1. Intente git ls-filesdescrito en el documento de git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Para más opciones consulte la documentación .

drstoop
fuente