2011-10-08 15 views
8

mio flusso di lavoro:Qualsiasi gui per git si unisce (w squash)?

  • ramo da maestro
  • opera nel mio ramo, commettono frequentemente (100+)
  • quando il lavoro è fatto nel mio ramo, unione master nel mio ramo, risolvere tutte le conflitto.
  • Code Review tempo prima che la fusione di nuovo a padroneggiare

Per Code Review, ho bisogno di mostrare le differenze tra due teste e zucca/organizzare i miei impegna (in circa 5 commit). Qual è la migliore interfaccia grafica (multipiattaforma?) Per questo compito?

+1

Sospetto che non è necessario mostrare le differenze tra i due rami, perché se vengono effettuati più commit sul master tra l'unione e la revisione, si desidera che vengano esclusi. Probabilmente è meglio mostrare solo le modifiche introdotte sul ramo, escludendo le eventuali modifiche introdotte sul master. Quindi puoi unire in qualsiasi momento, invece di doverlo fare immediatamente prima di rivederlo. –

risposta

9

Dipende dal sistema operativo (git Tower, solo per MacO, ad esempio, è una particolare interfaccia grafica ma non offre alcuna funzione particolare per un rebase interattivo). On Windows, there doesn't seem to be any GUI per quella funzione.

Il modo più semplice rimane uno che coinvolge senza interfaccia, dove è possibile eseguire un

git rebase --interactive --autosquash 

perché hai commesso con messaggio di commit a cominciare! Zucca (quando questi commette intermedi erano circa lo stesso compito)
Vedere " Trimming GIT Checkins/Squashing GIT History ".

+0

Questo comando è in grado di schiacciare permanentemente i commit nella cronologia del progetto o semplicemente di visualizzarli in questo modo per gli scopi della revisione? –

+1

@JonathanHartley Schiacci i commit, ma puoi resettare una volta che non hai avuto bisogno di quel commit schiacciato. – VonC

0

Su Linux, le mie due GUI preferite per git sono gitg e meld. Per ottenere la correzione corretta per la revisione del codice nel tuo caso, avvia gitg e trova l'ultimo commit nel master che hai unito (importante, non vuoi diff contro l'attuale capo del master nel caso in cui il master sia avanzato dall'ultima fusione). Copia questo SHA1 e metterlo nella vostra git difftool:

git difftool -t meld <SHA1> 

Per impostarlo in modo che non è necessario specificare fondere come il difftool ogni volta, basta impostarlo nella configurazione:

git config --global diff.tool meld 
0

Eclipse può fare la parte di confronto. È possibile fare clic destro sul progetto e selezionare

Team->Advanced->Synchronize With...->(branch you want to compare against) 

che vi mostra il diff tra i 2 rami. Tuttavia, né Git né alcuna GUI che io conosca supporta lo schiacciamento che IMHO è troppo cattivo.

così finisco per fare un

git rebase --interactive HEAD~3 

(nel caso in cui ho avuto 3 impegna voglio schiacciare).

2

L'output di qualsiasi comando 'git diff' può essere visualizzato in uno strumento GUI utilizzando il comando 'git difftool'.

In primo luogo, il comando 'diff' che vogliamo: Visualizzare le diff accumulati introdotte da ogni commettono su 'mybranch' quanto discostato dal 'master' con:

git diff master...mybranch 

o

git diff master...HEAD 

Nota questo esclude qualsiasi commit che sia avvenuto sul master nel frattempo, che è probabilmente quello che vuoi se stai rivedendo mybranch.

Se mybranch è il tuo attuale capo, allora questo può essere abbreviato:

git diff master... 

Git alimenterà l'output di comandi diff in uno di una lista di circa otto strumenti grafici noti, utilizzando 'git difftool'. Io uso kdiff3 su OSX, e in passato l'ho usato felicemente anche su Linux. Preferisco kdiff3 perché mi consente di eseguire le unioni a 3 vie quando richiesto e mi consente di modificare manualmente l'output dell'unione e di selezionare solo gli hunks da utilizzare.

Prima di installare kdiff3, quindi aggiungere un collegamento simbolico ad esso sul PATH. Per me, che era:

ln -s /Applications/kdiff3.app/Contents/MacOS/kdiff3 /usr/local/bin/kdiff3 

poi dire git che si desidera utilizzare KDiff3 come strumento diff GUI:

git config --global merge.tool kdiff3 

quindi visualizzare i tuoi cambiamenti in essa:

git difftool master...