Domanda

repo git Supponiamo che la forcella di qualcuno e make commette A, B, C, e D. La persom chi biforcato da allora ciliegio preleva A e C, che pertanto diventa A 'e C'. Fa anche X commit, Y e Z del proprio. Quindi, dopo tutto questo, il mio ramo ha un B C D, e la sua ha una 'C' X Y Z. Si supponga che entrambi i rami sono pubblicati, in modo rebase non è un'opzione attraente. Si supponga inoltre che X Y Z non discordanti con qualsiasi A B C D. Come faccio a fondere questi due rami in modo utile? Dovrei semplicemente unire e poi risolvere manualmente tutto? C'è qualcosa che posso fare per duplicato messaggi di commit nel log della testa fusa? Sono questi due rami condannati per la sincronizzazione solo da Cherry-picking di ogni altro si impegna da ora in poi?

È stato utile?

Soluzione

Una fusione dritto dovrebbe funzionare. Git dovrebbe notare i set di cambiamento identici e non tenterà di unire A / A 'o C / C'. Se X, Y o Z toccato lo stesso codice che A '/ C' cambiato, potrebbe essere necessario risolvere i conflitti lì, soprattutto se B o D toccato lo stesso codice.

Puoi sempre git merge --no-commit e controllare il risultato per vedere se è quello che ti aspettavi.

Altri suggerimenti

Nel caso in cui non ci siano conflitti, una fusione rettilineo è evidente. Se ci sono conflitti anche se ...

Si potrebbe fondere la sua C' prima, eventuali conflitti durante questa fase sono da ri-applicare le proprie modifiche, se sono non banale o perché vengono applicate un po' fuori uso. Può accadere se il C si accumula sulla B e la sua C 'non era una copia pulita, o se qualcuno di B C D si accumula sulla A in modo riapplicare il suo A' non è più ovvio no-op, ecc.

Si potrebbe saltare un'indagine dettagliata dei conflitti e solo accettare la versione, manualmente o:

git merge --strategy=ours C'

Quindi unire il resto, prestando maggiore attenzione ai conflitti lì. Se il suo X Z infatti non toccare A B C D roba, questo dovrebbe andare senza conflitti. Se ha fatto qualcosa di strano o sbagliato durante la fusione C come C 'e scartato quando la fusione C', si può tornare indietro e mordere qui o in qualsiasi momento in futuro però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top