Come posso aprire una revisione specifica di un file con Magit?


43

È possibile aprire una revisione specifica di un file in Emacs con Magit senza modificare il ramo corrente?

Ho modificato alcune modifiche locali in una revisione in cui le funzioni modificate sono state sostituite da funzionalità in un file diverso. Vorrei aprire la vecchia revisione delle mie modifiche in un buffer separato in modo da poter confrontare le modifiche fianco a fianco.

La mia attuale soluzione hacky è stata quella di eseguire git show <branch pre-rebase>:file > old_filee quindi aprire old_filein Emacs.


1
github.com/pidu/git-timemachine può visualizzare temporaneamente un file tra ciascuna versione.
Kuanyui,

1
@kuanyui che uso git-timemachinema dal momento che il mio codice è stato riformulato, non penso che funzionerà dal momento che il vecchio codice non fa parte della cronologia della filiale corrente?
David Holm,

Risposte:


56

È possibile visualizzare un file per una revisione specifica utilizzando M-x magit-find-file RET <filename> RET.

Oppure puoi prima visualizzare il diff per il commit premendo RETsu di esso, navigando fino al file all'interno del diff e quindi premendo di RETnuovo.


8
Questo funziona per me; ecco cosa faccio: dalla versione corrente del file M-x magit-log-buffer-file, sposta la riga sul commit desiderato, quindi M-x magit-find-file. Quindi il valore predefinito sarà quel commit. Devo dare il percorso al file in quanto questo non viene prelevato dal buffer di registro.
Liam,

@tarsius, Un po 'come magit-find-file ma dove ho solo bisogno di selezionare la revisione per il file del buffer corrente. Esiste già?
ergosys,

Sì, utilizza magit-find-filese stesso da un buffer per la visita dei file e quindi digita RETal secondo prompt (il file corretto viene offerto come predefinito).
tarsius,

Grazie per le informazioni e tutto il tuo lavoro su Magit. Non è stato troppo difficile hackerare una funzione che salta quel fastidioso tasto in più, quindi sono felice fino al prossimo prurito.
ergosys,

29

È possibile avere a che fare con VC semplice (integrato in Emacs), senza Magit. Digita C-x v ~e digita la versione che desideri. Comprende tag e hash SHA1, nonché i soliti ~1suffissi ecc.


Questa non è una risposta a una domanda magit. Pubblicheresti una risposta C a una domanda su Ruby?
Bryan Ash,

4
@BryanAsh sì, se la soluzione in C è molto più semplice.
Markus Strauss,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.