miei rami Git simile a questa:Come REBASE già finita Ribasato filiali
master-*-*-*-*-*-*-implement_x
\ \-*-further_foo_fixes_that_depend_on_x
\ \-*-*-further_bar_fixes_that_depend_on_x
\
\-implement_x_rebased
Si è conclusa in questo modo, perché ho pensato che il mio ramo implement_x
sarebbe stata fusa a monte come è, ma mi è stato chiesto di schiacciarlo a un singolo commit, quindi implement_x_rebased
. Tuttavia, ho già avviato diversi rami per ulteriori correzioni e sviluppi che dipendono dal mio lavoro, mentre aspetto che lo implement_x
venga unito.
Ora desidero rifare i successivi lavori su implement_x_rebased
. Ho pensato che fosse un no-op, dal momento che implement_x
e implement_x_rebased
erano nello stesso identico stato - non ci sarebbero stati conflitti di merge, semplicemente applicando le modifiche tra implement_x
e further_foo_fixes_that_depend_on_x
ecc. Sopra implement_x_rebased
. Tuttavia, sembra che git non sia così intelligente, e cerchi di rebase fino in fondo dalla base - introducendo inutili conflitti di fusione.
ho pensato che la via più facile a dire rebase & schiacciare i ulteriori correzioni su implement_x
e poi riporre, e applicare le stashes per implement_x_rebased
, ma io sono curioso di sapere se esiste un modo corretto di fare git conto che implement_x
e implement_x_rebased
sono effettivamente nello stesso stato?
Non conosco la risposta perfetta per questa domanda, ma cherry-pick è anche una delle opzioni. – shirakia
Ah. La raccolta delle ciliegie è decisamente più semplice e migliore dell'applicazione manuale di alcune differenze. Sto ancora aspettando risposte che rispondano direttamente alla mia domanda, ma se non ce n'è per il momento, accetterò che se la pubblichi. – GolDDranks
Per favore controlla 'git rev-parse implement_x^{tree} implement_x_rebased^{tree}' per vedere se i due commit sono davvero di contenuto identico. – jthill