Kaip perkelti naują vietinį filialą į nuotolinį „Git“ saugyklą ir ją stebėti?

Noriu sugebėti atlikti šiuos veiksmus:

  • Sukurkite vietinį filialą, pagrįstą kitu (nuotoliniu ar vietiniu) filialu (per git branch arba git checkout -b )

  • Paspauskite vietinį filialą į nuotolinį saugyklą (publikuokite), tačiau tai atlikite, kad git pull and git push veiks nedelsiant.

Kaip tai padaryti?

Žinau apie --set-upstream Git 1.7, bet tai yra veiksmas po kūrimo. Noriu rasti būdą, kaip padaryti panašius pakeitimus, kai spusteliu filialą nuotolinėje saugykloje.

3689
04 мая '10 в 15:58 2010-05-04 15:58 Roni Yaniv paklausė gegužės 10 d. 15 val. 15:58 2010-05-04 15:58
@ 13 atsakymų

Git 1.7.0 ir vėlesnėse versijose galite patikrinti naują filialą:

 git checkout -b <branch> 

Failų redagavimas, pridėjimas ir tvirtinimas. Tada spustelėkite parinktį -u (trumpas - --set-upstream ) :

 git push -u origin <branch> 

Paspaudus „Git“ nustatys stebėjimo informaciją.

5823
03 июня '11 в 23:50 2011-06-03 23:50 atsakymas duotas Danieliui Ruosui birželio 03 d. 11 val. 23:50 2011-06-03 23:50

Jei nesidalinate savo repo su kitais vartotojais, tai naudinga, jei norite, kad visi filialai būtų nukreipti į nuotolinį, o --set-upstream jums tinka:

 git push --all -u 
border=0

(Ne būtent tai, ko prašė OP, tačiau ši vienos eilutės sąsaja yra gana populiari)

Jei dalinatės savo repo su kitais, tai nėra labai gera forma, nes jūs užpildysite repo su visais savo egzotiškomis eksperimentinėmis šakomis.

449
20 янв. Atsakymą pateikė ErichBSchulz 20 sausis 2014-01-20 14:36 '14, 14:36 2014-01-20 14:36

Prieš įvedant „ git push -u nebuvo jokių „ git push galimybių, kad gautumėte tai, ko norite. Turėtumėte pridėti naujų konfigūravimo instrukcijų.

Jei kuriate naują filialą, naudokite:

 $ git checkout -b branchB $ git push origin branchB:branchB 

Galite naudoti git config komandą, kad būtų išvengta tiesioginio .git/config failo redagavimo.

 $ git config branch.branchB.remote origin $ git config branch.branchB.merge refs/heads/branchB 

Arba galite rankiniu būdu redaguoti .git/config failą, kad galėtumėte gauti informaciją apie šio temos stebėjimą.

 [branch "branchB"] remote = origin merge = refs/heads/branchB 
133
04 мая '10 в 16:03 2010-05-04 16:03 Atsakymą pateikė „ Lohrun “ gegužės 10 d., 10 val. 16:03 2010-05-04 16:03

Paprasčiau tariant, norėdami sukurti naują vietinį padalinį, atlikite:

 git branch <branch-name> 

Jei norite perkelti jį į nuotolinį saugyklą, atlikite šiuos veiksmus:

 git push -u origin <branch-name> 
111
24 апр. atsakymas, kurį pateikė piyushmandovra balandžio 24 d 2015-04-24 15:09 '15, 15:09 2015-04-24 15:09

Nedidelis jau siūlomų sprendimų variantas:

  1. Sukurkite vietinį padalinį, pagrįstą kitu (nuotoliniu ar vietiniu) filialu:

     git checkout -b branchname 
  2. Spustelėkite vietinį filialą nuotolinėje saugykloje (skelbkite), tačiau atlikite jo atsekamumą, todėl „ git pull ir „ git push veiks iškart

     git push -u origin HEAD 

    HEAD yra „patogus būdas išversti esamą filialą į tą patį pavadinimą nuotolinio valdymo pulte“. Šaltinis: https://git-scm.com/docs/git-push „Git HEAD“ (didžiosios raidės) yra nuoroda į dabartinio filialo (medžio) viršų.

    --set-setupstream variantas trumpas tik --set-setupstream . Tai prideda esamos šakos sekimo nuorodą. Tai galite patikrinti peržiūrėdami .git / config failą:

    2019

Manau, kad jūs jau klonavote projektą, pavyzdžiui:

 git clone http://github.com/myproject.git 
  • Tada savo vietinėje kopijoje sukurkite naują filialą ir patikrinkite:

     git checkout -b <newbranch> 
  • Tarkime, jūs sukūrėte „git bare -init“ savo serveryje ir sukūrėte myapp.git, turėtumėte:

     git remote add origin ssh://example.com/var/git/myapp.git git push origin master 
  • Po to vartotojai turėtų galėti

     git clone http://example.com/var/git/myapp.git 

PASTABA. . Manau, kad jūsų serveris veikia. Jei ne, tai neveiks. Čia rasite gerą praktinį vadovą.

Pridėta

Pridėti nuotolinį filialą:

 git push origin master:new_feature_name 

Patikrinkite, ar viskas yra gerai (pasirinkite nuotolinių filialų pradžią ir sąrašą):

 git fetch origin git branch -r 

Sukurkite vietinį filialą ir sekite nuotolinį filialą:

 git checkout -tb new_feature_name origin/new_feature_name 

Atnaujinti visus:

 git pull 
27
Atsakymą pateikė VP. 2010-05-04 16:04 04 gegužės 10 d. 16:04 2010-05-04 16:04

Aš tiesiog darau

 git push -u origin localBranch:remoteBranchToBeCreated 

per jau klonuotą projektą.

„Git“ sukuria naują filialą, vadinamą „ remoteBranchToBeCreated pagal mano remoteBranchToBeCreated aš padariau localBranch .

24
20 марта '17 в 14:13 2017-03-20 14:13 atsakymą pateikė Arda kovo 20 d., 17 val. 14:13 2017-03-20 14:13

redaguoti pasenusius, tiesiog naudokite git push -u origin $BRANCHNAME


Naudokite „Git“ leidinio git publish-branch iš „ William“ įvairių „Git“ įrankių ( gitorious repo ir klonas ).

Na, ne Ruby, taip ignoruodami atsargumo priemones! - paimkite paskutines tris scenarijaus eilutes ir sukurkite „bash“ scenarijų, „ git-publish-branch :

19
04 мая '10 в 16:03 2010-05-04 16:03 atsakė Tobias Kienzleriui gegužės 10 d. 10 val. 2010-05-04 16:03

Norėdami sukurti naują filialą, jį atskiriant nuo esamo filialo

git checkout -b <new_branch>

tada spustelėkite šį naują temą saugykloje naudodami

git push -u origin <new_branch>

Tai sukuria ir verčia visus vietinius įsipareigojimus naujai sukurtai nuotolinės origin/<new_branch>

16
03 июня '15 в 23:36 2015-06-03 23:36 atsakymas pateikiamas cptjack 03 birželio 15 d. 23:36 2015-06-03 23:36

Aš padariau pseudonimą, todėl, kai kuriu naują filialą, jis tinkamai pašalins ir stebės nuotolinį filialą. Į failą „ .bash_profile įtraukiau šį fragmentą:

 # Create a new branch, push to origin and track that remote branch publishBranch() { git checkout -b $1 git push -u origin $1 } alias gcb=publishBranch 

Naudojimas : tiesiog įveskite gcb thuy/do-sth-kool su thuy/do-sth-kool - tai mano naujas filialo pavadinimas.

7
05 янв. atsakymą pateikė Thuy Trinh 05 Jan 2016-01-05 13:11 '16 at 13:11 2016-01-05 13:11

GitLab 1.7 versijoje naudokite:

git checkout -b name_branch

(name_branch, ex: master)

Jei norite siųsti jį į nuotolinę saugyklą, atlikite šiuos veiksmus:

git push -u origin name_new_branch

(name_new_branch, pavyzdys: funkcija)

6
06 дек. Atsakymas pateikiamas Fadid 06 dec. 2016-12-06 21:42 '16 at 21:42 2016-12-06 21:42

Remdamasis čia pateiktais atsakymais, šį procesą supakavau kaip paprastą „bash“ scenarijų, kuris, žinoma, galėtų būti naudojamas kaip „Git“ slapyvardis.

Svarbus papildymas man yra tai, kad jis skatina mane atlikti vieneto testus prieš padarydamas ir perduodamas dabartinį numatytojo filialo pavadinimą.

 $ git_push_new_branch.sh Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch -> Displays prompt reminding you to run unit tests git_push_new_branch OK -> Pushes the current branch as a new branch to the origin git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin 

git_push_new_branch.sh

 function show_help() { IT=$(CAT <<EOF Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch.sh -> Displays prompt reminding you to run unit tests git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin ) echo "$IT" exit } if [ -z "$1" ] then show_help fi CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ "$1" == "OK" ] then BRANCH=$CURR_BRANCH else BRANCH=${1:-$CURR_BRANCH} fi git push -u origin $BRANCH 
1
21 апр. Atsakymas pateikiamas Brad Parks 21 balandžio. 2017-04-21 16:30 '17, 16:30 val. 2017-04-21 16:30

Jei norite įkelti vietinės viešosios saugyklos filialą, turite atidaryti bendrąjį saugyklą ir tada naudoti šį kodą:

 git push -u origin branchname 
-8
26 июня '15 в 12:37 2015-06-26 12:37 atsakymą pateikė shankar kumar birželio 26 d. 15 val. 12:37 2015-06-26 12:37

Kiti klausimai apie žymas „ arba „ Užduoti klausimą“