Izpratne par Git Merge no-ff opciju
Viena no stiprākajām pusēm ir git vienkāršā apvienošanās spēja. Apvienošanās laikā git izmanto apvienošanu ātri uz priekšu, kad pamanīs, ka pašreizējās filiāles GALVS ir saistības, kuru mēģināt apvienot, priekštecis. Apvienojot ātri uz priekšu, nav jaunu saistību. Gits tikai pārvieto rādītāju. Ja šī darbība nav vēlama, varat izmantot karodziņu no-ff, lai izveidotu jaunu apvienošanās saistību.
Kā sapludināšana izskatās ātri un bez priekšu
Pēc ātras uz priekšu jūsu git vēsture izskatīsies šādi:
C0 -> C1 -> C2-> C3
Attiecībā uz tādu pašu saistību skaitu šeit ir apvienošanas vēsture bez ātras pārsūtīšanas:
Pirmajā gadījumā nekas neliecina, ka būtu notikusi atzarošana. Otrajā gadījumā vēsture rāda C4 apņemšanos norādīt apvienošanās vietu.
Ejot caur piemēru
Jūs izveidosiet git repozitoriju, izveidosiet filiāli un pēc tam mēģināsiet apvienot gan ar priekšu, gan bez tā.
1. sadaļa: Iestatīšana
Pirmkārt, varat izveidot git repozitoriju, veicot šādas darbības:
$ mkdir my_project$ cd my_project
$ git init
$ pieskarieties a.txt
$ git pievienot -A
$ git saistīt -m "C0: pievienojot a.txt "
Tagad izveidosim filiāli ar nosaukumu Features un izdarīsim dažas izmaiņas:
$ git filiāles funkcijas$ git norēķinu funkcijas
$ pieskarieties b.txt
$ git pievienot -A
$ git saistīt -m "C1: b pievienošana.txt "
$ pieskarieties c.txt
$ git pievienot -A
$ git saistīt -m "C2: c pievienošana.txt "
$ pieskarieties d.txt
$ git pievienot -A
$ git saistīt -m "C3: pievienojot d.txt "
2. sadaļa: Apvienošana ar ātru pārsūtīšanu
Atgriezīsimies pie galvenā atzara un apvienosim tajā atzarus:
$ git norēķinu meistars$ git sapludināšanas funkcijas
Izeja:
Atjaunina 08076fb… 9ee88ebĀtri uz priekšu
b.txt | 0
c.txt | 0
d.txt | 0
Mainīti 3 faili, 0 ievietojumi (+), 0 dzējumi (-)
izveidot režīmu 100644 b.txt
izveidot režīmu 100644 c.txt
izveidot režīmu 100644 d.txt
Pārbaudot vēsturi, redzēsiet:
$ git log - tiešsaistē9ee88eb C3: pievienojot d.txt
c72b92c C2: pievienojot c.txt
2e4039e C1: b pievienošana.txt
08076fb C0: Pievienojot a.txt
Tātad, visas saistības no filiāles iezīmēm tagad atrodas galvenajā zarā. Ja turpināsit veikt izmaiņas master, nav iespējas uzzināt, kad tajā tika apvienota funkciju filiāle.
3. sadaļa: Bez ātras pārsūtīšanas
Atkārtojiet 1. sadaļu jaunai mapei.
Pēc tam mēģiniet apvienot bez ātras pārsūtīšanas:
$ git norēķinu meistarsFunkcija $ git merge --no-ff
Jūsu git noklusējuma teksta redaktorā tas atvērs:
Apvienot filiāles funkcijas# Lūdzu, ievadiet saistību ziņojumu, lai paskaidrotu, kāpēc šī apvienošana ir nepieciešama,
# it īpaši, ja tas apvieno atjauninātu augšup pa tēmas atzaru.
#
# Rindas, kas sākas ar “#”, tiks ignorētas, un tukšs ziņojums tiek pārtraukts
# apņemties.
Mainīt komentārus. Šajā gadījumā jūs varat vienkārši pievienot “C4:” pirms “Merge branch 'features” ”. Izejai vajadzētu izskatīties šādi:
Apvienošana, izmantojot “rekursīvo” stratēģiju.b.txt | 0
c.txt | 0
d.txt | 0
Mainīti 3 faili, 0 ievietojumi (+), 0 dzējumi (-)
izveidot režīmu 100644 b.txt
izveidot režīmu 100644 c.txt
izveidot režīmu 100644 d.txt
Ja pārbaudīsit vēsturi, tai vajadzētu izskatīties šādi:
$ git log - tiešsaistēe071527 C4: apvienot filiāles “funkcijas”
bb79c25 C3: pievienojot d.txt
692bd8c C2: pievienojot c.txt
a0df62a C1: b pievienošana.txt
7575971 C0: Pievienojot a.txt
Var redzēt, ka, pat ja jums ir tieši tādas pašas izmaiņas, šai apvienošanas versijai ir papildu C4 saistība, kas nozīmē funkciju atzarojuma apvienošanu galvenajā.
Secinājums
Git merge no-ff karodziņš palīdz izveidot lasāmāku vēsturi. Tas ļauj ievietot tagus, kas skaidri parāda, kur notika apvienošanās. Tas var ietaupīt jūsu laiku un pūles atkļūdošanas laikā.
Turpmāka izpēte:
- https: // git-scm.com / docs / git-Merge
Atsauces:
- Steka pārpilde: kāda ir atšķirība starp git-merge-and-git-merge-no-ff
- https: // www.atlassian.com / git / tutorials / using-branchs / git-Merge