„Git“ traukia tam tikrą šaką iš „GitHub“

Turiu projektą su keliais filialais. Nusiuntiau juos į „ GitHub“ , o dabar, kai kažkas dirba projekte, turiu išgauti savo filialus iš „GitHub“. Jis puikiai veikia vedlyje. Bet tarkime, kad kažkas sukūrė xyz filialą. Kaip aš galiu traukti „ xyz filialą iš „GitHub“ ir sujungti jį su xyz filialu mano „ localhost ?

Tiesą sakant, turiu atsakymą čia: stumkite ir traukite šakas git

Bet gaunu klaidos pranešimą „! [Atmesti]“ ir kažką apie „ne greitą pirmyn“.

Bet kokie pasiūlymai?

474
10 нояб. nustatė tybro0103 10 nov. 2009-11-10 19:18 '09 19:18 2009-11-10 19:18
@ 11 atsakymų

Bet gaunu klaidos pranešimą „! [Atmesti]“ ir kažką panašaus į „ne greitą perdavimą“

Taip yra todėl, kad „Git“ negali sujungti filialų pakeitimų į savo dabartinį šeimininką. Tarkime, kad patikrinote master filialą ir norite sujungti į other-branch nuotolinį other-branch . Kai tai padarysite:

 $ git pull origin other-branch 

„Git“ iš esmės tai daro:

 $ git fetch origin other-branch  git merge other-branch 

Tai reiškia, kad pull yra tik fetch po kurio merge . Tačiau, pull , „Git“ sujungs tik other-branch , jei gali atlikti greitą perjungimą. Greitas susiliejimas yra susijungimas, kuriame šakos, į kurią bandote sujungti, vadovas yra tiesioginis šakos, kurią norite sujungti, vadovo palikuonis. Pvz., Jei turite šį istorijos medį, tada other-branch sujungimas sukels pagreitintą susijungimą:

 OOOOOO ^ ^ master other-branch 

Tačiau tai nebūtų greitas susijungimas:

  v master OOO \ \-OOOO ^ other-branch 

Norėdami išspręsti problemą, pirmiausia pasirinkite nuotolinį filialą:

 $ git fetch origin other-branch 

Tada sujunkite jį į savo dabartinį filialą (manau, kad šis master ) ir pataisysiu bet kokius sujungimo konfliktus:

 $ git merge origin/other-branch # Fix merge conflicts, if they occur # Add merge conflict fixes $ git commit # And commit the merge! 
562
10 нояб. Atsakymą pateikė mipadi lapkričio 10 d 2009-11-10 22:17 '09, 10:17 val. 2009-11-10 22:17

Tiesiog vizualiai stebėkite savo nuotolinius filialus, o paprastas „ git pull atliks tai, ko norite:

 git branch -f remote_branch_name origin/remote_branch_name git checkout remote_branch_name 

Pastaroji yra vietinė operacija.

border=0

Arba net geriau telpa į github šakotuvo dokumentus :

 git branch -f new_local_branch_name upstream/remote_branch_name 
262
10 нояб. atsakymas pateikiamas lapkričio 10 d. 2009-11-10 22:09 '09, 10:09, 2009-11-10 22:09

Filialą galite nukreipti į šaką su šiomis komandomis.

 git pull {repo} {remotebranchname}:{localbranchname} git pull origin xyz:xyz 

Kai esate pagrindiniame filiale, pirmiausia galite patikrinti filialą, pavyzdžiui:

 git checkout -b xyz 

Tai sukuria naują „xyz“ šaką iš vedlio ir tiesiogiai jį patikrina.

Tada atlikite šiuos veiksmus:

 git pull origin xyz 

Tai perkelia naują filialą į vietinį xyz filialą.

98
10 нояб. Robert Cabri atsakymas lapkričio 10 d 2009-11-10 19:28 '09 19:28 2009-11-10 19:28

Geriausias būdas:

 git checkout -b <new_branch> <remote repo name>/<new_branch> 
76
29 июня '12 в 9:12 2012-06-29 09:12 atsakymą mohitas pateikia birželio 12 d., 12 val. 9:12 2012-06-29 09:12

git fetch “ užims paskutinį šakų sąrašą.

Dabar galite git checkout MyNewBranch

Done :)


Norėdami gauti daugiau informacijos, žr. Šiuos dokumentus: git fetch

30
14 окт. Atsakymas suteiktas Bradley Flood 14 oct. 2014-10-14 04:02 '14 at 4:02 2014-10-14 04:02

Nesu tikras, kad visiškai suprantu problemą, bet ištraukite esamą filialą tokiu būdu (bent jau tai veikia man :)

 git pull origin BRANCH 

Daroma prielaida, kad jūsų vietinis filialas yra sukurtas iš lauko „Original“ / „BRANCH“.

29
10 нояб. Alex N. atsakymas . 2009-11-10 19:23 '09 19:23 2009-11-10 19:23

Tai padėjo man gauti nuotolinį filialą prieš jį sujungiant į kitą:

 git fetch repo xyz:xyz git checkout xyz 
10
16 февр. atsakymą pateikė anatolijus techtonikas 16 vas. 2016-02-16 00:25 '16 at 0:25 2016-02-16 00:25
 git pull <gitreponame> <branchname> 

Paprastai, jei turite tik repo priskyrimą jūsų kodui, tada gitreponame bus šaltinis.

Jei dirbate su dviem repo, pavyzdžiui, vienas yra vietinis ir kitas nuotolinis, pvz., Galite patikrinti atpirkimo sąrašą iš git remote -v . tai rodo, kiek repo yra priskirtas jūsų dabartiniam kodui.

„BranchName“ turi būti atitinkamame gitreponame.

Jei norite pridėti ar pašalinti repo, galite naudoti šias dvi komandas.

 git remote add <gitreponame> <repourl> git remote remove <gitreponame> 
2
08 дек. atsakymas duotas prathap 08 dec. 2017-12-08 07:23 '17 7:23 am 2017-12-08 07:23

taip pat galite padaryti

 git pull -r origin master 

taisyti sujungimo konfliktus, jei tokių yra

 git rebase --continue 

-r - atnaujinimui. Taip bus sukurta šakos struktūra

  v master ooooo \ooo ^ other branch 

į

  v master oooooooo ^ other branch 

Tai lems švaresnę istoriją. Pastaba Jei jau pradėjote paspausti kitą šaką (arba bet kurį kitą nuotolinio valdymo pultą), gali tekti priversti savo filialą po to, kai bus atliktas perkrovimas.

 git push -f origin other-branch 
1
28 авг. atsakymas duotas PKV 28 d. 2017-08-28 12:10 '17 12:10 pm 2017-08-28 12:10

Paprasčiau tariant, jei norite iš „GitHub“ ištraukti „ the_branch_I_want filialą:

 git fetch origin git branch -f the_branch_I_want origin/the_branch_I_want git checkout the_branch_I_want 
0
19 нояб. atsakymą pateikė Adrien Renaud lapkritis 19 2018-11-19 22:38 '18, 10:38 val. 2018-11-19 22:38

aš padariau

 git branch -f new_local_branch_name origin/remote_branch_name 

Vietoj

 git branch -f new_local_branch_name upstream/remote_branch_name 

Pasak @innaM. Kai aš naudoju ankstesnę versiją, ji sakė: „mirtinas: negaliojantis objekto pavadinimas:„ upstream / remote_branch_name “. Nenorėjau git fetch origin kaip siūloma komentare, bet paprasčiausiai jį pakeitė upstream .

0
25 июля '18 в 18:44 2018-07-25 18:44 Atsakymą pateikė Vicky liepos 25 d. 18 val. 18.44 val

Kiti klausimai apie žymių arba Ask a question