Kako premjestiti novu lokalnu granu u udaljeno Git spremište i pratiti je?

Želim moći učiniti sljedeće:

  • Stvorite lokalnu podružnicu na temelju neke druge (udaljene ili lokalne) grane (putem git branch ili git checkout -b )

  • Kliknite na lokalnu granu na udaljeno spremište (objavite), ali učinite to tako da git pull i git push odmah rade.

Kako to učiniti?

Znam za --set-upstream u Gitu 1.7, ali ovo je akcija nakon stvaranja. Želim pronaći način da napravim slične promjene kada kliknem granu na udaljenom spremištu.

3689
04 мая '10 в 15:58 2010-05-04 15:58 Roni Yaniv pitao 04. svibnja '10 u 15:58 2010-05-04 15:58
@ 13 odgovora

U Git 1.7.0 i novijim verzijama možete pogledati novu granu:

 git checkout -b <branch> 

Uređivanje datoteka, dodavanje i popravljanje. Zatim kliknite opciju -u (skraćeno od --set-upstream ) :

 git push -u origin <branch> 

Git će postaviti informacije o praćenju dok klikate.

5823
03 июня '11 в 23:50 2011-06-03 23:50 odgovor je dan Daniel Ruoso Lipanj 03 '11 u 23:50 2011-06-03 23:50

Ako svoj repo ne dijelite s drugim korisnicima, to je korisno kako biste sve svoje ogranke gurnuli u udaljenu, a --set-upstream prava --set-upstream za vas:

 git push --all -u 
border=0

(Nije točno ono što je OP zatražio, ali ovo jedno-linijsko sučelje je vrlo popularno)

Ako dijelite svoj repo s drugima, to nije baš dobra forma, jer ćete popunjavati repo sa svim svojim čudnim eksperimentalnim granama.

449
20 янв. Odgovor je dao ErichBSchulz 20. siječnja 2014-01-20 14:36 '14 u 14:36 2014-01-20 14:36

Prije uvođenja git push -u nije bilo git push opcije da dobijete ono što želite. Trebali ste dodati nove upute za konfiguraciju.

Ako stvarate novu granu, upotrijebite:

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

Možete koristiti naredbu git config da biste izbjegli izravno uređivanje .git/config datoteke.

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

Ili možete ručno urediti datoteku .git/config da biste imali informacije o praćenju ove niti.

 [branch "branchB"] remote = origin merge = refs/heads/branchB 
133
04 мая '10 в 16:03 2010-05-04 16:03 Odgovor je dao Lohrun na 04. svibnja '10 u 16:03 2010-05-04 16:03

Jednostavno rečeno, napravite novu lokalnu podružnicu:

 git branch <branch-name> 

Da biste ga premjestili u udaljeno spremište, slijedite ove korake:

 git push -u origin <branch-name> 
111
24 апр. odgovor od strane piyushmandovra 24. travnja 2015-04-24 15:09 '15 u 15:09 2015-04-24 15:09

Mala varijacija već predloženih rješenja:

  1. Stvorite lokalnu podružnicu na temelju neke druge (udaljene ili lokalne) grane:

     git checkout -b branchname 
  2. Kliknite na lokalnu granu na udaljeno spremište (objavite), ali učinite da se može pratiti, tako da git pull i git push odmah rade

     git push -u origin HEAD 

    Korištenje HEAD je "prikladan način za prevođenje trenutne grane na isto ime na daljinskom upravljaču". Izvor: https://git-scm.com/docs/git-push U smislu Git HEAD (velika slova) je link na vrh trenutne grane (stabla).

    Opcija -u je samo kratica za --set-setupstream . Time će se dodati trenutni link za praćenje za trenutnu granu. To možete provjeriti ako pogledate datoteku .git / config:

    2019

Pretpostavljam da ste već klonirali projekt, na primjer:

 git clone http://github.com/myproject.git 
  • Zatim izradite novu granu u lokalnoj kopiji i provjerite je:

     git checkout -b <newbranch> 
  • Pretpostavimo da ste na poslužitelju stvorili "git bare -init" i stvorili myapp.git, trebali biste:

     git remote add origin ssh://example.com/var/git/myapp.git git push origin master 
  • Nakon toga korisnici bi trebali moći

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

NAPOMENA. , Pretpostavljam da je vaš poslužitelj pokrenut. Ako nije, neće uspjeti. Ovdje je dobar praktični vodič.

ADDED

Dodavanje udaljene grane:

 git push origin master:new_feature_name 

Provjerite je li sve u redu (odaberite početak i popis udaljenih grana):

 git fetch origin git branch -r 

Stvorite lokalnu granu i pratite udaljenu granu:

 git checkout -tb new_feature_name origin/new_feature_name 

Ažuriraj sve:

 git pull 
27
Odgovor daje VP. 2010-05-04 16:04 04. svibnja '10 u 16:04 2010-05-04 16:04

Jednostavno znam

 git push -u origin localBranch:remoteBranchToBeCreated 

preko već kloniranog projekta.

Git stvara novu granu zvanu remoteBranchToBeCreated pod mojim remoteBranchToBeCreated Ja sam u localBranch .

24
20 марта '17 в 14:13 2017-03-20 14:13 odgovor je dao Arda 20. ožujka '17 u 14:13 2017-03-20 14:13

uredi zastarjelo, samo upotrijebi git push -u origin $BRANCHNAME


Upotrijebite git publish-branch iz raznih Williamovih Git alata ( gitorious repo i klon ).

Pa, nema Ruby, ignorirajući mjere opreza! - uzeti posljednja tri retka skripte i izraditi bash skriptu, git-publish-branch :

19
04 мая '10 в 16:03 2010-05-04 16:03 je odgovorio Tobiasu Kienzleru dana 04. svibnja '10 u 16:03 2010-05-04 16:03

Za stvaranje nove grane, odvajajući je od postojeće grane

git checkout -b <new_branch>

i zatim kliknite ovu novu nit u spremištu pomoću

git push -u origin <new_branch>

To stvara i gura sve lokalne origin/<new_branch> u novo stvorenu origin/<new_branch> udaljenog origin/<new_branch>

16
03 июня '15 в 23:36 2015-06-03 23:36 odgovor je dao cptjack 3. lipnja '15 u 23:36 2015-06-03 23:36

Napravio sam pseudonim, tako da svaki put kada stvorim novu granu, ona će prikladno izbrisati i pratiti udaljenu granu. Stavio sam sljedeći isječak u datoteku .bash_profile :

 # 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 

Upotreba : samo upišite gcb thuy/do-sth-kool s thuy/do-sth-kool - ovo je moj novi naziv grane.

7
05 янв. odgovor je dao Thuy Trinh 05 Jan 2016-01-05 13:11 '16 u 13:11 2016-01-05 13:11

Za GitLab verziju 1.7 koristite:

git checkout -b name_branch

(name_branch, ex: master)

Da biste ga poslali u udaljeno spremište, slijedite ove korake:

git push -u origin name_new_branch

(name_new_branch, primjer: funkcija)

6
06 дек. Odgovor je dat Fadid 06 dec. 2016-12-06 21:42 '16 u 21:42 2016-12-06 21:42

Oslanjajući se malo na odgovore ovdje, ovaj sam proces pretvorio u jednostavnu bash skriptu, koja se, naravno, mogla koristiti kao pseudonim za Git.

Važan dodatak za mene je da me ohrabruje da pokrenem testove jedinica prije izvršenja i prosljeđuje trenutni naziv zadane grane.

 $ 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 апр. Odgovor je dat Brad Parks 21 apr. 2017-04-21 16:30 '17 u 16:30 sati 2017-04-21 16:30

Da biste učitali lokalnu granu javnog repozitorija, trebate cd da biste otvorili dijeljeno spremište, a zatim upotrijebite sljedeći kôd:

 git push -u origin branchname 
-8
26 июня '15 в 12:37 2015-06-26 12:37 odgovor je dao shankar kumar 26. lipnja '15 u 12:37 2015-06-26 12:37

Ostala pitanja o oznakama ili Ask a Question