2013-08-09 20 views
13

Ho scoperto che posso mostrare le vecchie versioni di un file usando 'git log filename' per mostrare i commit, e quindi usare 'git show commit-id: filename' per la vecchia versione. Ma lo mette solo di meno.git mostra la vecchia versione del file nell'editor

Mi piacerebbe poterlo vedere in emacs, così posso navigare come sono abituato e in modo che ci sia l'evidenziazione della sintassi. Ho scoperto che non posso impostare git core.pager su emacs dato che emacs non può leggere dallo stdin.

Qualcuno sa come potrei fare questo? O hai un altro buon modo di controllare le vecchie versioni dei file?

+2

I * Non * hanno un modo migliore di controllare vecchie revisioni: con vim: p . Un semplice 'git show commit-id: nomefile | vim -' e hai finito! – amaurymartiny

+0

Puoi anche provare 'most' come cercapersone, ha il supporto per i colori. – Mali

+0

Migliori risposte disponibili su http://stackoverflow.com/questions/25420282/using-emacs-and-magit-to-visit-a-file-in-given-commit-branch-etc - in particolare, 'Cx v ~ 'è ottimo anche per il cambio di filiali. – Ibrahim

risposta

18

Basta usare > e inserirlo in un file che è possibile aprire in emacs.

git show commit-id:filename > oldfile 

Quindi aprire il file in emacs.

4

Se si utilizza bash, è possibile utilizzare Process Substitution.

gvim <(git show commit-id:filename) 
+0

Quando si apre emacs dice 'collegamento simbolico a file inesistente' nel minibuffer e viene mostrato un buffer vuoto – kodu

+0

Non ho provato 'emacs <(git show commit-id: nomefile)', sono un utente vim ... E questo comando non funziona con emacs: quando emacs apre il file temporaneo creato dal comando '<()', il file non esiste più ... – Nimlar

Problemi correlati