¿Cómo puedo abrir una revisión específica de un archivo con Magit?

43

¿Es posible abrir una revisión específica de un archivo en Emacs con Magit sin cambiar la rama actual?

Reescribí algunos cambios locales en una revisión donde las funciones modificadas fueron reemplazadas por la funcionalidad en un archivo diferente. Me gustaría abrir la revisión anterior de mis cambios en un búfer separado para poder comparar los cambios uno al lado del otro.

Mi solución hacky actual ha sido ejecutar git show <branch pre-rebase>:file > old_filey luego abrir old_fileen Emacs.

David Holm
fuente
1
github.com/pidu/git-timemachine puede ver un archivo entre cada versión de un vistazo temporalmente.
kuanyui
1
@kuanyui que uso, git-timemachinepero dado que mi código ha sido modificado, ¿no creo que funcione ya que el código anterior no es parte del historial de la sucursal actual?
David Holm

Respuestas:

56

Puede ver un archivo para una revisión específica usando M-x magit-find-file RET <filename> RET.

O puede ver primero el diff para confirmar presionándolo RET, navegando al archivo dentro del diff y luego presionando RETnuevamente.

Kyle Meyer
fuente
8
Esto funciona para mi; esto es lo que hago: desde la versión actual del archivo M-x magit-log-buffer-file, mueva la línea a la confirmación deseada, entonces M-x magit-find-file. Entonces el valor predeterminado será ese commit. Tengo que dar la ruta al archivo ya que esto no se recoge del búfer de registro.
Liam
@tarsius, algo así como magit-find-file pero donde solo necesito seleccionar la revisión para el archivo del búfer actual. ¿Ya existe?
ergosys
Sí, utilícelo magit-find-filedesde un búfer de visita de archivos y luego simplemente escriba RETen el segundo indicador (el archivo apropiado se ofrece como predeterminado).
tarsius
Gracias por la información y todo su trabajo en Magit. No fue demasiado difícil hackear una función que omite esa molesta pulsación de tecla adicional, así que estoy feliz hasta que ocurra el próximo picor.
ergosys
29

Es posible hacerlo con VC simple (integrado en Emacs), sin Magit. Escriba C-x v ~y escriba la versión que desee. Entiende las etiquetas y los hash SHA1, así como los ~1sufijos habituales, etc.

legoscia
fuente
Esta no es una respuesta a una pregunta magit. ¿Publicarías una respuesta C a una pregunta de Ruby?
Bryan Ash
44
@BryanAsh sí, si la solución en C es mucho más fácil.
Markus Strauss