Kaip sujungti nuotolinį valdiklį į vietinį filialą

Turiu vietinį projekto padalinį („configUpdate“), kurį atsisakiau iš kito projekto, ir aš jį pakeitiau ir norėčiau sujungti savo vietos filialo pakeitimus.

Aš bandžiau

 git pull --rebase origin configUpdate 

bet jis nepriėmė naujausių pokyčių - kaip aš galiu sujungti šiuos du? (taip pat ir premijos taškams, ką aš pull --rebasepull --rebase ?)

170
26 авг. nustatė Martyn 26 rug. 2011-08-26 09:06 '11 at 9:06 2011-08-26 09:06
@ 4 atsakymai

Sužinojau, kad tai buvo:

 $ git fetch upstream $ git merge upstream/master 
59
26 авг. atsakymas pateikiamas Martyn 26 rug. 2011-08-26 09:29 '11 ne 9:29 2011-08-26 09:29

Kaip apie tai (jei šiuo metu esate konfigūracijos atnaujinimo skyriuje):

 git fetch git rebase origin/master 

Trumpai tariant:

  • git merge branchname prisiima naujus įsipareigojimus iš filialo branchname šakos ir prideda juos prie dabartinio filialo. Jei reikia, ji automatiškai prideda „sujungti“ iš viršaus.

  • git rebase branchname paima naujus įsipareigojimus iš filialo branchname šakos ir įterpia juos „po“ jūsų pakeitimais. Tiksliau, ji pakeičia dabartinės šakos istoriją taip, kad ji būtų pagrįsta branchname , su bet kokiais pakeitimais, kuriuos jūs padarėte.

  • git pull iš esmės sutampa su „ git fetch; git merge origin/master git fetch; git merge origin/master .

  • git pull --rebase iš esmės atitinka git fetch; git rebase origin/master git fetch; git rebase origin/master .

Tad kodėl jūs norite naudoti git pull --rebase , o ne git pull ? Štai paprastas pavyzdys:

  • Pradedate dirbti su nauja funkcija.

  • Kai būsite pasirengę atlikti pakeitimus, kai kuriuos įsipareigojimus spustelėjo kiti kūrėjai.

  • Jei esate git pull (kuris naudoja sujungimą), jūsų pakeitimai bus palaidoti su naujais įsipareigojimais, be automatiškai sukurtų sujungimo pataisų.

  • Jei vietoj to git pull --rebase , „git“ pagreitins jūsų kompiuterio peradresavimą į viršų ir taikys pakeitimus iš viršaus.

257
26 авг. atsakymą pateikė Joey Adams 2011-08-26 09:09 '11 at 9:09 2011-08-26 09:09

Eikite į vietinį skyrių

> git checkout configUpdate

Sujunkite nuotolinį vedlį su savo filialu

> git rebase master configUpdate

Jei turite konfliktų, ištaisykite juos ir vykdykite komandą kiekvienam prieštaraujančiam failui

> git add [path_to_file / compated_file] (pvz., git add application / asset / javascripts / test.js)

Tęsti atnaujinimą

> „git rebase“ - tęsti

27
23 июня '12 в 14:48 2012-06-23 14:48 atsakymą pateikė Serge Seletskyy , birželio 23 d., 12 val. 14:48 2012-06-23 14:48

„git rebase“ man atrodo neveiksminga. Po git rebase, kai bandau spustelėti mano vietinio filialo pakeitimus, ir toliau gavau klaidos pranešimą („užuomina:„ Atnaujinimai buvo atmesti, nes dabartinio filialo pabaiga yra už jo nuotolinio pavyzdžio “. Integruoti nuotolinius pakeitimus (pvz.,„ Git “ traukite ... ') prieš paspaudžiant dar kartą. ") net ir po git traukimo. Tai, kas man baigėsi, buvo gitų sujungimas.

 git checkout <local_branch> git merge <master> 

Jei man naujas, čia yra geras straipsnis „git“ sujungimo ir „git“ atkūrimo skiltyje. https://www.atlassian.com/git/tutorials/merging-vs-rebasing

9
06 июля '17 в 0:34 2017-07-06 00:34 atsakymą pateikė AJC liepos 6 d. 17 d. 0:34 2017-07-06 00:34

Kiti klausimai apie žymių arba Užduoti klausimą