bine ați venit la ghidul ultimate la git merge
și git rebase
comenzile. Acest tutorial vă va învăța tot ce trebuie să știți despre combinarea mai multor ramuri cu Git.
Git Merge
comanda git merge
va îmbina orice modificări care au fost făcute la baza de cod pe o ramură separată la ramura curentă ca o nouă comitere.,
sintaxa comenzii este următoarea:
git merge BRANCH-NAME
De exemplu, dacă în prezent sunteți angajat într-o ramură numită dev
și-ar dori să fuzioneze noi modificări care au fost făcute într-o ramură numită new-features
, te va emite următoarea comandă:
git merge new-features
Notă: Dacă există orice modificări neconfirmate pe ramură de curent, Git nu vă va permite să fuzioneze până când toate modificările în ramură de curent au fost comise., Să se ocupe de aceste modificări, puteți fie să:
de a Crea o nouă ramură și comite modificările
git checkout -b new-branch-namegit add .git commit -m "<your commit message>"
Ascunzătoarea ei
git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree
a Abandona toate modificările
git reset --hard # removes all pending changes
Git Rebazare
Rebasing o sucursală în Git este un mod de a muta toate elementele unei sucursale la un alt punct în copac. Cel mai simplu exemplu este mutarea unei ramuri mai sus în copac., Spunem că avem o ramură care s-a abătut de ramura de master la punct O:
/o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master
atunci Când rebazare puteți muta o astfel de prognoze:
/o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master
Pentru rebazare, asigurați-vă că aveți toate comite vrei în rebazare în ramura master. Verificați ramura pe care doriți să o rebase și tastați git rebase master
(unde master este ramura pe care doriți să o rebase)., că, de exemplu, o ramură care s-a bazat pe o altă ramură (să-l numim caracteristică) este indexat pe maestru:
/---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master
git rebase master branch
sau git rebase master
când ai verificat ramură, vei primi:
/---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch
Git rebazare interactive in consola
utilizare git rebase
in consola cu o listă a comite puteți alege, edita sau picătură în rebazare:
- Introducere
git rebase -i HEAD~5
cu ultimul număr fiind orice număr de comite din cele mai recente invers doriți să revizuiască., - În vim, apăsați
esc
, apoii
pentru a începe editarea testului. - în partea stângă puteți suprascrie
pick
cu una dintre comenzile de mai jos. Dacă doriți să strivească o comite într-una anterioară și aruncați comite mesaj, introducețif
în loc depick
a comis-o. - Salvați și părăsiți editorul de text.
- când rebase este oprit, face ajustările necesare, apoi utilizați
git rebase --continue
până când rebase este de succes., - Dacă rebases cu succes, atunci ai nevoie pentru a forța de a împinge modificările cu
git push -f
pentru a adăuga indexate versiune la depozit la distanță. - dacă există un conflict de îmbinare, există o serie de modalități de a remedia acest lucru, inclusiv urmând sugestiile din acest ghid. O modalitate este să deschideți fișierele într-un editor de text și să ștergeți părțile codului pe care nu le doriți. Apoi folosiți
git add <file name>
urmat degit rebase --continue
., Puteți sări peste conflict comite prin introducereagit rebase --skip
, opri rebasing de funcționaregit rebase --abort
in consola.
conflicte de îmbinare
un conflict de îmbinare este atunci când faceți comiteri pe ramuri separate care modifică aceeași linie în moduri conflictuale.,care versiune a fișierului pentru a păstra într-un mesaj de eroare similar cu următorul:
CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.
Dacă te uiți la resumé.txt
fișier în editorul de cod, puteți vedea în cazul în care conflictul a avut loc:
<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address
Git adăugat câteva linii suplimentare la dosar:
<<<<<<< HEAD
=======
>>>>>>> updated_address
Git Merge vs Git Rebazare
Ambele git merge
și git rebase
sunt foarte utile comenzi, și unul nu este mai bun decât celălalt., Cu toate acestea, există unele diferențe foarte importante între cele două comenzi pe care tu și echipa ta ar trebui să ia în considerare.
ori de câte ori git merge
este rulat, se creează o comitere suplimentară de îmbinare. Ori de câte ori lucrați în depozitul local, având prea multe comiteri de îmbinare poate face ca istoricul comiterii să pară confuz. O modalitate de a evita merge commit este de a utiliza git rebase
în schimb.
git rebase
este o caracteristică foarte puternică. Acestea fiind spuse, este riscant, de asemenea, dacă nu este folosit în mod corect., git rebase
modifică Istoricul comiterii, deci folosiți-l cu grijă. Dacă rebasing-ul se face în depozitul de la distanță, atunci poate crea o mulțime de probleme atunci când alți dezvoltatori încearcă să tragă cele mai recente modificări de cod din depozitul de la distanță. Nu uitați să rulați doar git rebase
într-un depozit local.
asta e tot ce trebuie să știți pentru a fuziona și rebase cu cele mai bune dintre ele.