Ultimate Guide to Git Merge ja Git Rebase

Tervetuloa lopulliseen oppaaseen git mergeja git rebasekomentoihin. Tämä opetusohjelma opettaa sinulle kaiken, mitä sinun tarvitsee tietää useiden haarojen yhdistämisestä Gitin kanssa.

Yhdistä

git mergeKomento yhdistää muutokset, jotka tehtiin koodipohja erillisellä haara nykyisen haaran uutena sitoutua.

Komennon syntakse on seuraava:

git merge BRANCH-NAME

Esimerkiksi, jos työskentelet parhaillaan haarassa nimeltä devja haluat yhdistää kaikki uudet muutokset, jotka on tehty haarassa nimeltä new-features, annat seuraavan komennon:

git merge new-features

Huomaa: Jos nykyisessä haarassasi on tekemättä muutoksia, Git ei salli sulautumista, ennen kuin kaikki muutokset nykyisessä haarassasi on tehty. Voit käsitellä näitä muutoksia joko:

Luo uusi haara ja tee muutokset

git checkout -b new-branch-name git add . git commit -m ""

Sijoita ne

git stash # add them to the stash git merge new-features # do your merge git stash pop # get the changes back into your working tree

Hylkää kaikki muutokset

git reset --hard # removes all pending changes

Git Rebase

Oksan uudelleenasentaminen Gitissä on tapa siirtää oksa kokonaisuudessaan puun toiseen kohtaan. Yksinkertaisin esimerkki on oksan siirtäminen ylöspäin puussa. Sano, että meillä on haara, joka poikkesi päähaarasta kohdassa A:

 /o-----o---o--o-----o--------- branch --o-o--A--o---o---o---o----o--o-o-o--- master

Kun teet uudelleenasennuksen, voit siirtää sitä näin:

 /o-----o---o--o-----o------ branch --o-o--A--o---o---o---o----o--o-o-o master

Jos haluat perustaa uudelleen, varmista, että sinulla on kaikki haluamasi sitoumukset päähakemistosi uudelleentaseessa. Tarkista haara, jonka haluat perustaa uudelleen ja kirjoittaa git rebase master(missä master on haara, johon haluat perustaa uudelleen).

On myös mahdollista perustaa uudelleen toiselle haaralle, niin että esimerkiksi haara, joka perustui toiseen haaraan (kutsutaan sitä ominaisuudeksi), perustuu uudelleen masteriin:

 /---o-o branch /---o-o-o-o---o--o------ feature ----o--o-o-A----o---o--o-o-o--o--o- master

Kun olet tarkistanut sivuliikkeen, git rebase master branchtai git rebase masterkun olet tarkistanut haaran, saat:

 /---o-o-o-o---o--o------ feature ----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch

Git rebase interaktiivinen konsolissa

Jos haluat käyttää git rebasekonsolissa tehtäväluetteloa, voit valita, muokata tai pudottaa uudelleentaseeseen:

  • Syötä git rebase -i HEAD~5viimeisenä numerona mikä tahansa määrä sitoumuksia viimeisimmästä taaksepäin, jonka haluat tarkistaa.
  • Aloita testin muokkaaminen painamalla VIM-painiketta escja sitten i.
  • Vasemmalla puolella voit korvata pickyhden alla olevista komennoista. Jos haluat purkaa sitoumuksen edelliseen ja hylätä sitoutumisviestin, kirjoita sitoumuksen fsijasta pick.
  • Tallenna ja lopeta tekstieditori.
  • Kun uudelleentase on pysäytetty, tee tarvittavat muutokset ja käytä sitten, git rebase --continuekunnes uudelleentäyttö onnistuu.
  • Jos se käynnistyy uudelleen onnistuneesti, sinun on pakotettava muutokset git push -flisäämään uudelleentasotettu versio etätallennustilaan.
  • Jos on olemassa ristiriita, se voidaan korjata monilla tavoilla, mukaan lukien tämän oppaan ehdotusten noudattaminen. Yksi tapa on avata tiedostot tekstieditorissa ja poistaa koodin osat, joita et halua. Käytä sitten git add ja sitten git rebase --continue. Voit ohittaa ristiriidassa olevan sitoumuksen kirjoittamalla git rebase --skip, lopettaa uudelleenkäynnistämisen suorittamalla git rebase --abortkonsolissa.
pick 452b159  pick 7fd4192  pick c1af3e5  pick 5f5e8d3  pick 5186a9f  # Rebase 0617e63..5186a9f onto 0617e63 (30 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but stop to edit the commit message. # e, edit = use commit, but stop to amend or add commit. # s, squash = use commit, meld into previous commit and stop to edit the commit message. # f, fixup = like "squash", but discard this commit's log message thus doesn't stop. # x, exec = run command (the rest of the line) using shell # d, drop = remove commit # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out

Yhdistä ristiriidat

Yhdistämiskonflikti on, kun teet sitoumuksia erillisillä haaroilla, jotka muuttavat samaa linjaa ristiriitaisella tavalla. Jos näin tapahtuu, Git ei tiedä, mikä tiedostoversio säilytetään seuraavanlaisessa virheilmoituksessa:

CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.

Jos katsot resumé.txttiedostoa koodieditorissa, näet missä konflikti tapahtui:

<<<<<<>>>>>> updated_address

Git lisäsi tiedostoon joitain ylimääräisiä rivejä:

  • <<<<<<< HEAD
  • =======
  • >>>>>>> updated_address

Ajattele   =======konfliktin jakolinjana. Kaikki nykyisen haaran välissä <<<<<<< HEADja =======on sen sisältö, johon HEAD-viite osoittaa. Toisaalta kaikki sulautuvan haaran välinen   sisältö =======ja >>>>>>> updated_addresssisältö on updated_address.

Git Merge vs Git Rebase

Molemmat git mergeja git rebaseovat erittäin hyödyllisiä komentoja, ja yksi ei ole parempi kuin muut. Kahden komennon välillä on kuitenkin joitain erittäin tärkeitä eroja, jotka sinun ja tiimisi tulisi ottaa huomioon.

Aina kun git mergese suoritetaan, ylimääräinen yhdistämissitoumus luodaan. Aina kun työskentelet paikallisessa arkistossa, liian monta yhdistämistoimintoa voi tehdä sitoutumishistorian hämmentäväksi. Yksi tapa välttää yhdistämissitoumus on käyttää git rebasesen sijaan.

git rebaseon erittäin tehokas ominaisuus. Tästä huolimatta on myös riskialtista , jos sitä ei käytetä oikealla tavalla. git rebasemuuttaa sitoutumishistoriaa, joten käytä sitä varoen. Jos uudelleenkäynnistys tapahtuu etätietovarastossa, se voi aiheuttaa paljon ongelmia, kun muut kehittäjät yrittävät hakea viimeisimmät koodimuutokset etätietovarastosta. Muista käyttää vain git rebasepaikallisessa arkistossa.

Se on kaikki mitä sinun on tiedettävä sulautua ja perustaa uudelleen parhaisiin.