Git

Git Merge -no-ff Možnost

Git Merge -no-ff Možnost

Razumevanje možnosti Git Merge no-ff

Enostavnost spajanja gita je ena od njegovih prednosti. Med spajanjem git uporablja hitro spajanje naprej, ko opazi, da je HEAD trenutne veje prednik preda, ki jo želite združiti. Pri hitrem združevanju ni novega prevzema. Git samo premakne kazalec. Če to vedenje ni zaželeno, lahko z zastavico no-ff ustvarite novo objavo za spajanje.

Kako je videti združitev s hitrim napredkom in brez njega

Po preusmeritvi naprej bo vaša zgodovina git videti tako:

C0 -> C1 -> C2-> C3

Za enako število prevzemov je tukaj zgodovina združevanja brez pospeševanja naprej:

V prvem primeru nič ne kaže, da je prišlo do razvejanja. V drugem primeru zgodovina prikazuje zavezo C4, ki označuje, kje je prišlo do združitve.

Sprehod skozi primer

Ustvarili boste repozitorij git, ustvarili vejo in nato poskusili združitve s hitro previjanjem naprej in brez njega.

Oddelek 1: Namestitev

Najprej lahko git repozitorij ustvarite z naslednjimi koraki:

$ mkdir moj_projekt
$ cd moj_projekt
$ git init
$ dotik a.txt
$ git add -A
$ git commit -m "C0: Dodajanje a.txt "

Zdaj pa ustvarimo vejo, imenovano funkcije, in naredimo nekaj sprememb:

Značilnosti podružnice $ git
$ git checkout funkcije
$ dotik b.txt
$ git add -A
$ git commit -m "C1: Dodajanje b.txt "
$ dotik c.txt
$ git add -A
$ git commit -m "C2: Dodajanje c.txt "
$ touch d.txt
$ git add -A
$ git commit -m "C3: Dodajanje d.txt "

Poglavje 2: Združitev s hitrim posredovanjem

Vrnimo se na glavno vejo in v to združimo značilnosti:

$ git checkout master
$ git merge funkcije

Izhod:

Posodabljanje 08076fb… 9ee88eb
Hitro naprej
b.txt | 0
c.txt | 0
d.txt | 0
3 datoteke spremenjene, 0 vstavkov (+), 0 izbrisov (-)
ustvari način 100644 b.txt
ustvariti način 100644 c.txt
ustvariti način 100644 d.txt

Če preverite zgodovino, boste videli:

$ git log --oneline
9ee88eb C3: Dodajanje d.txt
c72b92c C2: Dodajanje c.txt
2e4039e C1: Dodajanje b.txt
08076fb C0: Dodajanje a.txt

Torej, vsi predaji iz veje lastnosti so zdaj v glavni veji. Če še naprej spreminjate master, ni mogoče vedeti, kdaj je bila veja funkcij združena vanj.

Oddelek 3: Brez hitrega posredovanja naprej

Ponovite 1. odsek za novo mapo.

Nato poskusite združiti brez posredovanja naprej:

$ git checkout master
$ git merge --no-ff funkcija

V privzetem urejevalniku besedil vašega gita se bo odprlo naslednje:

Spoji veje 'lastnosti'
# Prosimo, vnesite sporočilo za objavo, da razložite, zakaj je ta združitev potrebna,
# še posebej, če združi posodobljeno upstream v vejo teme.
#
# Vrstice, ki se začnejo z '#', bodo prezrte in prazno sporočilo se bo prekinilo
# zaveza.

Spremenite komentarje. V tem primeru lahko preprosto dodate “C4:” pred “Spajanje vej 'lastnosti” ”. Izhod bi moral izgledati tako:

Združitev, narejena s "rekurzivno" strategijo.
b.txt | 0
c.txt | 0
d.txt | 0
3 datoteke spremenjene, 0 vstavkov (+), 0 izbrisov (-)
ustvari način 100644 b.txt
ustvariti način 100644 c.txt
ustvariti način 100644 d.txt

Zdaj, če preverite zgodovino, mora biti videti tako:

$ git log --oneline
e071527 C4: Spajanje vej 'lastnosti'
bb79c25 C3: Dodajanje d.txt
692bd8c C2: Dodajanje c.txt
a0df62a C1: Dodajanje b.txt
7575971 C0: Dodajanje a.txt

Vidite lahko, da ima kljub popolnoma enakim spremembam ta različica združevanja dodaten C4 zavezujoči znak, ki pomeni združevanje vej funkcij v glavni.

Zaključek

Oznaka git merge no-ff pomaga ustvariti bolj berljivo zgodovino. Omogoča vam, da postavite oznake, ki jasno kažejo, kje je prišlo do združitve. Prihranite lahko čas in trud med odpravljanjem napak.

Nadaljni študij:

Reference:
Odprtokodna vrata komercialnih igralnih sistemov
Brezplačne, odprtokodne in medplatformacijske igre, ki jih lahko uporabite za igranje starih, pa tudi nekaterih dokaj nedavnih naslovov iger. V tem čl...
Najboljše igre ukazne vrstice za Linux
Ukazna vrstica ni le vaš največji zaveznik pri uporabi Linuxa - lahko je tudi vir zabave, saj jo lahko uporabljate za igranje številnih zabavnih iger,...
Najboljše aplikacije za preslikavo gamepadov za Linux
Če želite igre na Linuxu igrati z igralno ploščico namesto s tipičnim sistemom za vnos tipkovnice in miške, je za vas na voljo nekaj uporabnih aplikac...