2009-07-10 18 views
24

Ho un diff piuttosto grande di 2 rami GIT e vorrei aprirli in una sorta di bella interfaccia utente affiancata. Qualcosa che mi mostra facilmente il diff, e spero di poter unire le differenze una alla volta. git diff è piuttosto difficile da lavorare.GIT diff GUI

+0

Ho intenzione di aggiungere questo come commento dato che non l'ho mai usato ma [gitk] [1] fa il trucco? [1]: http://www.kernel.org/pub/software/scm/git/docs/gitk.html – seth

+0

whoops ... mi dispiace. anche i commenti di pensiero erano formattati. – seth

+0

gitk è ortogonale. – jrockway

risposta

23

La risposta è git difftool (almeno per git versione 1.6.3 e successive). Si ricorda che richiama semplicemente lo strumento di diffusione grafica configurato o trovato automaticamente.

+3

Esempio: git difftool --tool = opendiff testbranch master – daniel

+1

Invece di "testbranch master", che mostrerà le differenze tra testbranch e master, quando si esamina il branch "testbranch" spesso si desidera vedere solo i commit su quel ramo. Usa "master ... testbranch" per questo (tre periodi). Se testbranch è l'attuale HEAD, questo può essere abbreviato in "master ..." –

+0

@JonathanHartley: Diff è sempre su due endpoint, non sull'intervallo di commit . Nel browser del repository grafico come ad es. 'gitk' (o' git log --graph') il 'master ... testbranch' mostra entrambi i rami su un antenato comune. Per diff' master ... testbranch' è una scorciatoia per diff di antenato comune e (penso) 'testbranch'. –

1

Se si sta procedendo alla fusione, git diff ha una sintassi veramente bella in cui le prime due colonne mostrano la parentela di ogni riga, in una sorta di diff unione unificata. Da lì è facile risolvere i conflitti con qualsiasi editor.

Avete i bei colori attivati? Ecco un frammento del mio ~/.gitconfig:

 
[color] 
    diff = auto 
    branch = auto 
    status = auto 
    interactive = auto 

In ogni caso, dare un'occhiata a KDiff3, per esempio. È possibile specificare lo strumento da utilizzare per la fusione, vedere i documenti git-mergetool per i dettagli.

+2

L'esecuzione di "git mergetool" è la risposta corretta, FWIW. – jrockway

23

Io uso kompare:

git diff | kompare - 

kompare non si limita a git, si può anche fare

svn diff | kompare - 
bzr diff | kompare - 
diff -Naur clean/ patched/ | kompare - 
kompare bug3.fix.diff 

... si ottiene l'idea.

+0

Grazie. Funziona anche con 'meld'. – elpddev