Mi repositorio sufrió cambios como:
- ... algunas confirmaciones no relacionadas ...
- Confirmar nuevo archivo
foo
con 100 líneas de contenido - ... interviniendo compromisos, algunos de los cuales tocan
foo
... - Inserte el contenido de
foo
en la parte superior de un archivo existentebar
ygit rm foo
en la misma confirmación - ... más confirmaciones no relacionadas ...
Ahora quiero ver el registro del archivo eliminado foo
. Todo lo que he leído, incluido SO, dice que debería poder hacerlo git log -- foo
, pero ese comando no produce ningún resultado.
Si encuentro la confirmación que incluye la eliminación foo
, puedo git log 1234abcd -- foo
y veo su registro, entonces creo que mi camino foo
no es el problema. También tenga en cuenta que las git merge-base HEAD 1234abcd
salidas 1234abcd[...]
, por lo que creo que debería probar que se puede acceder a la confirmación HEAD
. Tenga en cuenta que no hay ningún archivo foo
en mi árbol de trabajo (obvio, ya que fue eliminado). Usando Git 1.7.1.1 en OS X.
¿Por qué no me git log -- foo
funciona y cómo puedo solucionarlo? ¡Gracias!
git log --follow -- foo
ogit log --follow -M -- foo
? (para forzar la detección de cambio de nombre)--follow
pero al leerhistory
veo que desde entonces hice un cd en otro lugar cuando lo probé, lo que invalida la ruta.git log --follow -- foo
funcionó cuando lo intenté desde el punto de partida correcto. Supongo que Git considerófoo
entrarbar
en una especie de cambio de nombre. En cualquier caso, ¡gracias! Estaré encantado de acreditar esto si lo vuelve a publicar como respuesta.--
se cambia a—
en el título de la pregunta ...Respuestas:
Desea utilizar la
--follow
opción ongit log
, que se describe en la página de manual como:Efectivamente, esto no solo le permite ver el historial de un archivo renombrado, sino que también le permite ver el historial de un archivo que ya no está en el árbol de trabajo. Por lo tanto, el comando que debe usar debería verse así:
Actualizar:
Git 2.9+ ahora ha habilitado esto de forma predeterminada para todos los comandos
git diff
ygit log
:¡Gracias a x-yuri por el aviso!
fuente
--follow
pieza. Solo necesitaba agregar--
. Estoy corriendogit-2.9.0
.