Supponiamo che ho appena ribasato il ramo foo
su master
, con conflitti. Voglio assicurarmi di non danneggiare accidentalmente il contenuto di foo
durante la risoluzione dei conflitti introducendo modifiche extra o perdendo le modifiche (oltre a quelle appropriate per la risoluzione dei conflitti). Ho fatto questo tramite:Confronto delle differenze attraverso un rebase in Git
diff -u <(git diff `git merge-base master [email protected]{1}` [email protected]{1}) \
<(git diff `git merge-base master foo ` foo )
(aggiornamento: o l'equivalente ...
sintassi per git-diff
che ho appena ricordato :)
diff -u <(git diff [email protected]{1}) <(git diff master...foo) | mate
Questo mi mostra tutti i cambiamenti che si sono verificati a master..foo
considerato come una patch, che è esattamente quello che voglio controllare per essere minimo. Tuttavia, l'invocazione è complessa e l'output non è del tutto semplice da interpretare.
Esiste un modo migliore per eseguire questa attività: fornire le stesse informazioni, ma con un metodo o un formato migliore, oppure devo semplicemente prendere quanto sopra e racchiuderlo in uno script?
Non è essenzialmente equivalente a 'git diff foo @ {1} foo'? – twalberg
@twalberg No; 'git diff foo @ {1} foo' mostra sia le mie risoluzioni di conflitto sia le modifiche apportate al master su cui mi sono basato, piuttosto che solo le risoluzioni dei conflitti. –
Ah, giusto ... Stavo solo considerando il mio caso Rebase più comune, in cui la fusione tra origine e destinazione rimane la stessa (riscrittura/schiacciamento di un ramo prima di premere). – twalberg