Sto cercando di aiutare un collaboratore a capire che cosa ci fosse un mucchio di avvertimenti di "vuoto commit" nella sua recente unione. Ho aperto gitk, e ho visto qualcosa di simile:In che modo questi commit di git sono stati duplicati nel ramo sbagliato?
_o (Z) Merge branch 'new-branch' (yesterday)
o | (Y) Fix bad merge (person 1)
o_| (X) Merge branch 'master' into new-branch (recent)
o | (W) Last legitimate commit that belongs on new-branch (person 1)
| | ... work on master ...
o | (F) Legitimate commit that actually belongs on new-branch (person 2)
| | ... work on master ...
o | (E) Legitimate commit that should have been on master (person 2)
o | (D') Even more work etc... (committed by person 2)
o | (C') More work in master (committed by person 2)
o | (A') Normal work in master (committed by person 2)
| o (D) Even more work etc... (authored by random person)
| o (C) More work in master (authored by random person)
o | (B) Starting to work on new-branch (person 1)
|_o (A) Normal work in master (authored by random person)
o Common Ancestor (weeks ago)
Così, ovviamente, le due persone che lavorano su questo ramo dovrebbero si sono fuse dal maestro nel loro ramo più spesso, e quindi queste pile di avvertimenti di unione sarebbe stato più evidente . Il membro del team il cui nome era nel campo di comunicazione dei commit duplicati dice che probabilmente ha fatto un pull -rebase per causarli, ma non riesco a capire come potrebbe funzionare. Qualcuno può spiegare cosa potrebbe essere successo?
Non sto cercando un modo per correggere gli avvisi di unione, poiché sembravano benigni. Voglio solo capire cosa è successo in modo da poter evitare che accada in futuro. La mia squadra è relativamente nuova da git, quindi sto cercando di aiutarli a capirlo un piccolo passo alla volta, usando per lo più prove ed errori.
Grazie!
E 'possibile che abbiano fatto delle scelte di ciliegie? – jeerbl
Ne dubito. Quello che ho semplificato a 4 commit errati era in realtà più simile a 15.Mi sento come se ricordasse che la ciliegia ha raccolto 15 commit. Grazie per averlo sollevato come una possibilità! –
Quando si aggiorna il ramo di funzionalità con il master, accertarsi di rebase invece di unire il master. Questo essenzialmente prende il master attuale e seleziona tutte le modifiche delle caratteristiche su di esso. – lorengphd