2011-06-30 20 views
13

Después de desconectar de un servidor de git, intento obtener una lista de todos los archivos modificados. No necesito ninguna parte específica del código, solo una lista de archivos (con algún tipo de indicación de si se ha agregado, quitado o cambiado).Git pull change log

vi por primera vez el uso de git log, pero que sólo se appearantly devuelve información de la última confirmación:

git log --name-status --max-count=1 --pretty=format:""

Desde este appearantly sólo recibe los cambios de la última confirmación de un tirón, estoy tratando de encontrar una manera de obtener todos los cambios (la extracción casi siempre existe de múltiples confirmaciones).

¿Hay algún comando para esto? (Estoy interactuando con Git desde PHP, por cierto)

Respuesta

25

Después de una extracción, ORIG_HEAD se refiere a dónde estaba antes, y HEAD se refiere a dónde se encuentra ahora. Entonces, ORIG_HEAD.. significa los cambios introducidos en la rama actual. --max-count=1 significa solo el último compromiso, no lo que desea, como descubrió.

Es probable que desee algo como git diff --name-status ORIG_HEAD.. que dará como resultado un código de estado de un solo carácter y un nombre de archivo para cada archivo modificado, sumando todos los commits juntos. Si quieres que descompone por cada cambio, necesita algo así como git log --oneline --name-status ORIG_HEAD..

+1

'git diff ORIG_HEAD..' --name-estado funcionó como un encanto, no puede ¡di gracias lo suficiente! –

+2

'alias gpull = 'git pull; git diff --name-status ORIG_HEAD .. '' Justo lo que quería, agregué esto a mi .bashrc – tponthieux

+0

Esto no funciona como se desea si tienes una rama de seguimiento remoto que rastrea una rama diferente. Por ejemplo, si tengo mi rama 'topic' tracking' origin/master'. Pull rebase 'topic' en' origin/master'. Para ver el delta introducido solo en la rama ascendente, puede ejecutar 'git lg @ {1} .. @ {u}'. '@ {1}' usa reflogs y es lo mismo que 'ORIG_HEAD'. '@ {u}' es su rama ascendente (rama de seguimiento remoto) –

0

Un comando alternativo es:

git pull --stat