2013-03-12 3 views
29

vim-flüchtige Seite-an-Seite git diff eignet sich hervorragend zum Anzeigen von Diff-Dateien von nicht gesicherten Dateien.Wie kann ich git diff für jeden Commit mit vim-flüchtig anzeigen?

Wie kann ich vim-flüchtigen diff

  • Dateien git inszeniert?
  • jede git revision?
+2

Haben Sie lesen ': h fugitive'? – romainl

+0

Die Frage war, wie man bekommt: Gstatus + D wie Funktionalität für jede Revision. Bearbeitete Frage. – Sathish

+0

Ihre Frage ist jetzt völlig anders, die Sie bearbeitet haben. Aus Respekt vor Peter Rinckers Bemühungen sollten Sie Ihre Änderungen rückgängig machen, seine Antwort ankreuzen und eine andere Frage stellen. – romainl

Antwort

41

Diff zwischen der aktuellen Datei und dem Index

:Gdiff :0 

Diff zwischen der aktuellen Datei und einem anderen [revision]

:Gdiff [revision] 

Diff zwischen der aktuellen Datei und aktuelle Datei 3 begeht vor:

:Gdiff ~3 
+3

Für: Gdiff muss ich die Dateien kennen, die in einer Revision geändert wurden. : Gstatus listet nicht festgeschriebene Dateien auf, auf denen ich D drücken kann, um das Diff anzuzeigen. Wie kann ich ähnliche Dateiliste und diff auf jeder Revision bekommen. : Gstatus-Revision funktioniert nicht! – Sathish

+0

Ich glaube, das ist der falsche Weg, um das Problem anzugehen. Sie können ': Glog -' verwenden, um das 'quickfix'-Fenster mit vorherigen Commits zu füllen und die Commits zu untersuchen. Ich schlage vor, dass Sie sich die vimcast-Serie auf Flüchtigen anschauen: http://vimcasts.org/blog/2011/05/the-fugitive-series/ –

+0

Diese arbeiten alle in einer einzigen Datei. Wenn Sie die native Ausgabe von Git verkraften können, werfen Sie einen Blick auf ': Git!'. Zum Beispiel, ': Git! show [revision] 'lädt einen Syntax-Highlight-Patch von _all_ files in' [revision] '. Es ist nicht so schön wie das benutzerdefinierte Interaktionsmodell von ': Gstatus', kann aber eine praktische Referenz in einem Split sein. – Bluu

6

Hinzufügen zu obiger Antwort:

Wenn Sie einen diff zu bekommen, von einer bestimmten Datei von einem anderen Zweig

Gdiff branch_name:path/to/dir/filename.txt 
+1

Sie können auch 'Gdiff ' auf einem Puffer gehen, wenn die gleiche Datei auch in der vorhanden ist. –

18

Sie können :Glog zu verwenden, um die Geschichte Änderungen für diese Dateien zu erhalten. Sie können :cnext oder :cprevious verwenden, um zwischen Änderungen zu wechseln. Wenn Sie die Version treffen, die Sie vergleichen wollen, dann können Sie :Gdiff Sie können verwenden, um von vimdiff zu verlassen den Puffer schließen :q und von Verlaufsprotokoll verlassen mit :Gedit

Diese Config meine .vimrc Tastatur ist

nnoremap <leader>gs :Gstatus<CR> 
    nnoremap <leader>gc :Gcommit -v -q<CR> 
    nnoremap <leader>ga :Gcommit --amend<CR> 
    nnoremap <leader>gt :Gcommit -v -q %<CR> 
    nnoremap <leader>gd :Gdiff<CR> 
    nnoremap <leader>ge :Gedit<CR> 
    nnoremap <leader>gr :Gread<CR> 
    nnoremap <leader>gw :Gwrite<CR><CR> 
    nnoremap <leader>gl :silent! Glog<CR> 
    nnoremap <leader>gp :Ggrep<Space> 
    nnoremap <leader>gm :Gmove<Space> 
    nnoremap <leader>gb :Git branch<Space> 
    nnoremap <leader>go :Git checkout<Space> 
    nnoremap <leader>gps :Dispatch! git push<CR> 
    nnoremap <leader>gpl :Dispatch! git pull<CR> 

Ich empfehle, das Tim Pope unimpaired.vim Plugin zu verwenden.

Mit dieser Konfiguration mein Workflow ist:

<leader>gl Geschichte

]q und [q anzuzeigen, um zwischen Versionen (unimpaired.vim)

<leader>gd zu öffnen diff

:q zu Ende diff

<leader>ge um zu meiner Arbeitskopie zurückzukehren.

+0

erfordert auch vim-dispatch – gauteh

0

lasse ich hier nur die Art, wie ich ein Diff anzuzeigen, wenn die :Glog -- oder :Glog -- % (für aktuelle Datei) verwendet wird:

  1. :Glog --
  2. :cw eine Liste der Commits
  3. Navigieren Sie zu einem öffnen Commit und seine Info sowie betroffene Dateien werden angezeigt
  4. Fokus auf einen Dateipfad
  5. <c-w>gf und das Diff ist geöffnet i n neuen Tab
  6. :tabclose nur die Registerkarte zu schließen und den vorherigen Zustand zu erhalten, bevor die diff
Verwandte Themen