- Git rebase
- Ennen rebasing
- Säännöllinen rebase
- Interaktiivinen rebase
- Voima-push
- Yhdistää konfliktit
Tämä opas auttaa sinua pääsemään alkuun kanssa rebasing, voima-työntää, ja fixingmerge konflikteja paikallisesti.
ennen kuin sukellat tähän asiakirjaan, varmista, että tunnet usinggitin komentorivin kautta.
Git rebase
Rebasing on hyvin yleinen operaatio inGit., On olemassa seuraavat rebase-vaihtoehdot:
- Regular rebase.
- Interactive rebase.
Ennen rebasing
git rebase
kirjoittaa tehnyt historiaa. Se voi olla vahingollista tehdä se haarat. Se voi aiheuttaa monimutkaisia ja vaikeasti ratkaistavia yhdistämiskonflikteja. Näissä tapauksissa, sen sijaan, rebasing haarakonttorin vastaan, default branch,harkitse vetämällä sitä sen sijaan (git pull origin master
). Se on samanlainen vaarantamatta työtä avustajien.,on turvallisempaa varmuuskopioida oksa ennen kuin kumoaa sen varmistaaksesi, ettet häviä muutoksia. Esimerkiksi, harkita ominaisuus branchcalled my-feature-branch
:
-
Avaa oman kehityshaaran terminaali:
git checkout my-feature-branch
-
Kassalle uusi haara siitä:
git checkout -b my-feature-branch-backup
-
Mene takaisin alkuperäiseen haara:
git checkout my-feature-branch
Nyt voit turvallisesti rebase se., Jos jokin menee pieleen, voit palauttaa yourchanges nollaamalla my-feature-branch
vastaan my-feature-branch-backup
:
Huomaa, että jos olet lisännyt muutokset my-feature-branch
kun olet luonut varmuuskopion haara,menetät niitä, kun nollaus.
Säännöllinen rebase
säännöllinen rebase voit päivittää kehityshaaran kanssa defaultbranch (tai mikä tahansa muu haara).Tämä on tärkeä askel Git-pohjaisten kehitysstrategioiden kannalta., Sinun canensure, että muutokset lisäät codebase eivät riko anyexisting muutokset lisätty kohde haara, kun olet luonut featurebranch.,
For example, to update your branch my-feature-branch
with master
:
-
Fetch the latest changes from
master
:git fetch origin master
-
Checkout your feature branch:
git checkout my-feature-branch
-
Rebase it against
master
:git rebase origin/master
-
Force-push to your branch.,
Kun olet rebase:
- Git tuonti kaikki sitoutuu toimitettu
master
jälkeen themoment olet luonut oman kehityshaaran, kunnes hetkellä. - Git tuo sitoutuu sinulla on ominaisuus haara päälle kaikki sitoutuu tuotu
master
:
Voit korvata master
muiden haara haluat rebase vastaan, esimerkiksi, release-10-3
., Voit myös korvata origin
muiden remoterepositories, esimerkiksi upstream
. Voit tarkistaa, mitkä remotes-komennon olet liittänyt lokalrepositoriaasi, ja voit suorittaa git remote -v
.
Jos on yhdistämiskonflikteja, git kehottaa korjaamaan ne ennen rebasen jatkamista.
Lue lisää GIT: n dokumentaatiosta rebasing-ja rebasing-strategioista.
Interaktiivinen rebase
Voit käyttää interaktiivinen rebase muuttaa sitoutuu. Esimerkiksi muuttaa commmessage, squash (liittyä useita sitoutuu yhteen), muokata, tai deletecommits., Käytä rebase muuttaa menneitä commit viestejä, ja järjestää sitoutumishistoria haara pitää sen puhtaana.
Kun et halua muuttaa mitään viime syyllistyy, käytä interactiverebase viemällä lippu --interactive
(tai -i
), että rebase-komento.,
esimerkiksi, jos haluat muokata viimeisen kolmen sitoutuu oman haara(HEAD~3
), run:
git rebase -i HEAD~3
Git avaa viimeisen kolmen sitoutuu oman terminaalin tekstieditori ja describesall interaktiivinen rebase vaihtoehtoja voit käyttää. Oletusvaihtoehto on pick
, joka pitää toimituksen ennallaan. Avainsanan pick
mukaan tothe-toiminto, jonka haluat suorittaa jokaisen sitoutua. Voit tehdä niin, sinun täytyy muokata toimituksia terminaalin tekstieditorissa.,
esimerkiksi, jos käytät Vim kuten tekstieditori ina macOS on ZSH
kuori, ja haluat squash kaikki kolme sitoutuu(liittyä ne yhdeksi):
- Paina ion-näppäimistön siirtyä Vim on muokkaus-tilassa.
- Navigoida näppäimistön nuolia, jos haluat muokata toisen sitoutua keywordfrom
pick
jasquash
(tais
). Tee sama kolmannelle sitoumukselle.Ensimmäinen sitoutua pitäisi olla ennallaan (pick
), koska haluamme squashthe toisen ja kolmannen ensimmäiseen., - Press Escape to leave the editing mode.
- Type
:wq
to ”write” (save) and ”quit”. - Git lähdöt commit-viesti, niin sinulla on mahdollisuus muokata sitä:
- Kaikki rivit jotka alkavat
#
ohitetaan ja ei sisälly commitmessage. Kaikki muu on mukana. - jättää sen sellaisenaan, Kirjoita
:wq
. Toimitusviestin muokkaaminen: vaihda muokkaustilaan, muokkaa toimitusviestiä ja tallenna se kuten juuri teit.,
- Kaikki rivit jotka alkavat
- Jos et ole ajanut oman sitoutuu kauko-haara ennen rebasing,työntää muutokset normaalisti. Jos olisit jo painanut näitä sitoumuksia,pakota sen sijaan.
Huomaa, että vaiheet muokkaaminen komentorivin kautta voidaan slightlydifferent riippuen käyttöjärjestelmän ja shell käytät.
Katso Lukuisia kumota mahdollisuuksia Gitfor syvemmälle osaksi interaktiivinen rebase.,
Voima-push
Kun olet suorittaa monimutkaisempia toimintoja, esimerkiksi, squash sitoutuu, reset orrebase haara, sinun täytyy pakottaa päivityksen kauko-haara.Nämä toimet merkitsevät kirjoittamasta tehnyt historian haara.Pakottaa päivitys, siirtää lipun --force
tai -f
ja push
komento. Esimerkiksi:
git push --force origin my-feature-branch
Pakota päivitys ei ole suositeltavaa, kun olet työskennellyt sharedbranches.
vaihtoehtoisesti lipun voi ohittaasen sijaan., Se on turvallisempi, koska se ei korvaa mitään työtä remotebranch jos enemmän tekee lisättiin kauko-haara, jonka joku muu on:
git push --force-with-lease origin my-feature-branch
Jos sivuliike haluat pakottaa-push on suojattu,et voi pakottaa-push sitä, ellet poista suojaus ensin. Sitten voit pakottaa-työntää ja uudelleen suojella sitä.,
Merge-konflikteja
Kuten Git perustuu vertaamalla versioita fileline-by-line, kun linja muuttunut teidän haara sama sameline muuttunut kohde-haara (sen jälkeen, kun olet luonut oman kehityshaaran siitä), Gitidentifies nämä muutokset yhdistämisen ristiriita. Korjata se, sinun täytyy valitajoka versio, että linja haluat pitää.
useimmat konfliktit voidaan ratkaista GitLab-käyttöliittymän kautta.
monimutkaisemmissa tapauksissa on olemassa erilaisia keinoja niiden ratkaisemiseksi. On olemassa myös GIT-GUI-sovelluksia, jotka voivat auttaa erilaisuuttavisualisoimalla.,
korjata konflikteja paikallisesti, voit käyttää seuraavaa menetelmää:
-
Avaa terminaali ja checkout ominaisuus haara, esimerkiksi
my-feature-branch
:git checkout my-feature-branch
-
Rebase haarakonttorin vastaan kohde branch niin Gitprompts sinulle konflikteja:
git rebase origin/master
- Avaa ristiriitaisia tiedoston koodi editori mieleiseksesi.
- etsi konfliktin lohko:
- Se alkaa merkki:
<<<<<<< HEAD
., - alla on sisältö muutoksineen.
- merkkiaine:
=======
ilmaisee muutosten lopun. - alla on kohdehaaran tuoreimpien muutosten sisältö.
- merkki
>>>>>>>
osoittaa lopettaa konfliktin.
- Se alkaa merkki:
- Muokkaa tiedosto: valitse mikä versio (ennen tai jälkeen
=======
) haluat pitää, ja sitten poistaa osan sisältöä, jota et halua tiedosto. - Poista merkit.
- Tallenna tiedosto.,
- toista prosessi, jos on muita ristiriitaisia tiedostoja.
-
Vaiheessa muutoksia:
git add .
-
toimita muutokset:
git commit -m "Fix merge conflicts"
-
Jatka rebasing:
git rebase --continue
cautionUp tähän pisteeseen, voit suorittaagit rebase --abort
lopeta prosessi.Git keskeyttää rebase ja rullaa takaisin haara valtion oli beforerunninggit rebase
.,Kun olet ajanutgit rebase --continue
, rebaasia ei voida keskeyttää. - pakota-työnnä etähaaraasi.
Leave a Reply