Am un PR de pe o ramură numită feature-b
care va fi în curând au fuzionat pentru a main
. Cu toate acestea, l-am scris pentru a-mi susține feature-a
ramură, care este în curs de desfășurare. Vreau să continue să lucreze pe feature-a
si levier-am facut la feature-b
înainte de a fi fuzionat pentru a main
.
Ceea ce este cel mai bun mod pentru mine să fac asta? Nostru se unește cu main
sunt strivit, așa că toți se angajează pe feature-b
va fi rescris ca un singur comite atunci când este fuzionat pentru a main
. Prin urmare, rebasing feature-a
pe feature-b
acum va duce în viitor conflict de durere când am merge feature-a
pentru a main
pentru că aceleași modificări au fost făcute în diferite se angajează.
Ceea ce este cel mai bun mod pentru mine de a include modificările făcute în feature-b
în feature-a
filiala timp ce minimizarea viitorul durere, atunci când am în cele din urmă merge feature-a
pentru a main
?
UPDATE
Am mers mai departe și:
- Resetează
feature-a
pefeature-b
- A făcut mai multe schimbări (doar 1 comite) să
feature-a
în timpfeature-b
a fost revizuit - Squash-au fuzionat
feature-b
odată ce a fost aprobat (nu mai modificările necesare, astfel încâtfeature-a
deja are exact codul care a fost fuzionat) - A tras mai recente
main
și indexatefeature-a
pe partea de sus a acesteia
Cum era de temut, git se plânge că mai multe fișiere sunt "ambele modificate" sau "adăugate". Numai acest lucru ar fi un pic enervant, dar simplu pentru a repara. Ceea ce o face extrem de confuz, mai ales dacă orice trecere de timp a trecut - este fuzionare comentarii în fișiere.
Chiar dacă ambele main
și feature-a
ramurile au exact același cod , în toate fișierele, devin foarte enervant comportament:
- Pentru "ambele adăugat" fișiere, merge comentariile sunt adăugate pentru "CAP (Schimbarea Curentă)" și "părinte al #HASH (comite mesaj)". Eu sunt obligat să aleagă una sau alta, chiar dacă ele sunt exact la fel!
- Pentru "ambele modificate" de fișiere, este chiar mai rău. "CAPUL (Curent de Schimbare)", arată codul corect. Cu toate acestea, "părinte al #HASH (comite mesaj)" secțiune prezintă jumătate din cod. Din nou, deși ambele ramuri au tot codul!! Nu glumesc, acceptarea "primite schimbare" (ca etichetate cu VS Cod) va elimina codul care este, în ambele ramuri!
Dacă nu aș fi făcut aceste schimbări în succesiune rapidă, aș fi fost iremediabil pierdut și confuz despre ceea ce git dă-mi. Care are într-adevăr s-a întâmplat de mai multe ori în trecut, dar nu am putut pune degetul pe ceea ce se întâmplă. Acum, că am reprodus acest lucru și verificate de comportament, sunt complet consternat de ceea ce git este de a face și cum sunt oamenii de-a face cu acest scenariu.
UPDATE 2
OK, am un fel de a vedea de ce a fost de gând pentru a elimina codul acum. Pentru că schimbările făcute în feature-b
au fost în mai multe comite, și cei comite sfârșit prin a fi strivit atunci când merge la main
a avut loc. Aceasta este, fără îndoială sursa de durere și de ce încerc să-mi dau seama un flux de lucru mai sănătos.