Den enkle sammenslåingsevnen til Git er en av dens styrker. Under en sammenslåing bruker Git spol fremover sammenslåing når den merker at hodet til den nåværende grenen er en stamfar til forpliktelsen du prøver å slå sammen. I en spurt fremover sammenslåing er det ingen ny forpliktelse. Git flytter bare pekeren. Hvis denne oppførselen ikke er ønskelig, kan du bruke NO-FF-flagget for å skape en ny forpliktelse for sammenslåingen.
Hvordan sammenslåing ser ut med og uten spurt
Etter en spurt fremover vil git-historien din se slik ut:
C0 -> C1 -> C2-> C3
For samme antall forpliktelser, her er en sammenslåingshistorie uten spole fremover:
I det første tilfellet er det ingen indikasjoner på at det var noen forgrening. I det andre tilfellet viser historien en C4 -forpliktelse for å indikere hvor sammenslåingen skjedde.
Gå gjennom et eksempel
Du oppretter et Git-depot, oppretter en gren og deretter prøve sammenslåingene med og uten spurt fremover.
Først kan du opprette Git -depotet med følgende trinn:
$ mkdir my_projectLa oss nå lage en gren som heter funksjoner og begå noen få endringer:
$ git filialfunksjonerLa oss gå tilbake til Master Branch og fusjonsfunksjonene til filial inn i den:
$ git Checkout Master
$ git fusjonsfunksjoner
Produksjon:
Oppdatering 08076FB ... 9EE88EBHvis du sjekker historien, vil du se:
$ git log --onelineSå alle forpliktelsene fra funksjoner er i mastergrenen nå. Hvis du fortsetter å gjøre endringer til Master, er det ingen måte å vite når funksjonsgrenen ble slått sammen i den.
Gjenta avsnitt 1 for en ny mappe.
Prøv deretter en sammenslåing uten å spole frem:
$ git Checkout Master
$ git fusjon-ingen-ff-funksjonen
Det vil åpne for følgende i Gits standardtekstredigerer:
Fusjonsgren 'Funksjoner'
# Vennligst skriv inn en forpliktelsesmelding for å forklare hvorfor denne sammenslåingen er nødvendig,
# Spesielt hvis den fusjonerer en oppdatert oppstrøms til en emnegren.
#
# Linjer som starter med '#' vil bli ignorert, og en tom melding aborterer
# forpliktelsen.
Endre kommentarene. I dette tilfellet kan du bare legge til “C4:” før “Merge Branch” -funksjoner ””. Utgangen skal se slik ut:
Fusjon laget av den "rekursive" strategien.Nå hvis du sjekker historien, skal det se ut som følgende:
$ git log --onelineDu kan se at selv om du har nøyaktig de samme endringene, har denne versjonen av Merge den ekstra C4 -forpliktelsen som betegner sammenslåing av funksjonsgren til master.
Konklusjon
Git smelte. Det lar deg sette tagger som tydelig viser hvor sammenslåingen skjedde. Det kan spare deg for tid og krefter under feilsøking.