Vraag Maak een bestaande Git-branch track een remote branch?


Ik weet hoe ik een nieuwe branch moet maken die remote branches volgt, maar hoe maak ik een bestaand filiaal een externe filiaal?

Ik weet dat ik de. Kan bewerken .git/config bestand, maar het lijkt erop dat er een gemakkelijkere manier zou zijn.


3074
2018-02-06 15:14


oorsprong


antwoorden:


Gegeven een filiaal foo en een afstandsbediening upstream:

Vanaf Git 1.8.0:

git branch -u upstream/foo

Of, als lokale vestiging foo is niet de huidige branche:

git branch -u upstream/foo foo

Of, als u langere opdrachten wilt typen, zijn deze gelijk aan de bovenstaande twee:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

Vanaf Git 1.7.0:

git branch --set-upstream foo upstream/foo

Opmerkingen:

Alle bovenstaande opdrachten veroorzaken een lokale vertakking foo om remote branch te volgen foo van afstandsbediening upstream. De oude syntaxis (1.7.x) is verouderd ten gunste van de nieuwe (1.8+) syntaxis. De nieuwe syntaxis is bedoeld om intuïtiever te zijn en gemakkelijker te onthouden.


Zie ook: Waarom moet ik de hele tijd `- set-upstream` doen?


3745
2018-02-18 03:06



U kunt het volgende doen (ervan uitgaande dat u bent uitgecheckt op de master en wilt pushen naar een externe filiaalmaster):

Stel de 'afstandsbediening' in als u deze nog niet hebt

git remote add origin ssh://...

Configureer nu de master om te volgen om te volgen:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

En druk op:

git push origin master

206
2018-03-09 08:50



Ik doe dit als een neveneffect van duwen met de -u optie zoals in

$ git push -u origin branch-name

De equivalente lange optie is --set-upstream.

De git-branch commando begrijpt ook --set-upstream, maar het gebruik ervan kan verwarrend zijn. Versie 1.8.0 wijzigt de interface.

git branch --set-upstream is verouderd en kan in een relatief verre toekomst worden verwijderd. git branch [-u|--set-upstream-to] is geïntroduceerd met een saner volgorde van argumenten.

...

Het was verleidelijk om te zeggen git branch --set-upstream origin/master, maar dat vertelt Git om de lokale "origin / master" -branche te regelen om te integreren met de momenteel uitgecheckte branch, wat hoogst onwaarschijnlijk is wat de gebruiker bedoelde. De optie is verouderd; gebruik de nieuwe --set-upstream-to (met een kort en zoet -u) in plaats daarvan.

Stel dat je een local hebt foo branch en wil dat het de branch behandelt met dezelfde naam als de branch stroomopwaarts. Laat dit gebeuren met

$ git branch foo
$ git branch --set-upstream-to=origin/foo

of gewoon

$ git branch --set-upstream-to=origin/foo foo

130
2017-10-02 16:24



Misschien vindt u het git_remote_branch hulpmiddel nuttig. Het biedt eenvoudige opdrachten voor het maken, publiceren, verwijderen, volgen en hernoemen van externe filialen. Een leuke functie is dat je het een kunt vragen grb commando om uit te leggen welke git commando's het zou uitvoeren.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



Eigenlijk voor het geaccepteerde antwoord om te werken:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



Ik geloof dat je al in Git 1.5.x een lokale vestiging zou kunnen hebben $BRANCH een externe tak volgen origin/$BRANCH, soortgelijk.

Gezien dat $BRANCH en origin/$BRANCH bestaan ​​en u bent nog niet uitgecheckt $BRANCH (schakel weg als je dat hebt), doe:

git branch -f --track $BRANCH origin/$BRANCH

Dit maakt opnieuw $BRANCH als een trackingtak. De -f forceert de schepping ondanks $BRANCH al bestaand. --track is optioneel als de gebruikelijke standaardwaarden aanwezig zijn (dat wil zeggen, de parameter git-config branch.autosetupmerge is waar).

Let op, als origin/$BRANCH bestaat nog niet, je kunt het maken door op je lokale te drukken $BRANCH in de externe repository met:

git push origin $BRANCH

Gevolgd door het vorige commando om de lokale vestiging te promoten in een trackingtak.


40
2017-07-28 09:33



1- update uw lokale metadata met behulp van: git fetch --all

enter image description here

2- toon uw remote en lokale vestigingen met behulp van: git branch -a , zie de volgende Screenshot

enter image description here

3- schakel over naar doelvertakking, die u aan de afstandsbediening wilt koppelen: gebruik

git afrekenen branchName

voorbeeld:

enter image description here 

4- Koppel uw lokale filiaal aan een afgelegen filiaal met behulp van:

git branch --set-upstream - to naamOfRemoteBranch

N.B: nameOfRemoteBranch : om te kopiëren van de uitvoer van stap 2 "git branch -r"

Voorbeeld van gebruik:

enter image description here


28
2018-06-06 14:21



Zorg ervoor dat je loopt:

git config push.default tracking

om probleemloos te kunnen pushen


22
2017-08-29 21:38



editing .git/config is waarschijnlijk de gemakkelijkste en snelste manier. Dat is wat de Git-commando's voor het afhandelen van remote branches in ieder geval doen.

Als je het bestand niet met de hand wilt meppen (en het is niet zo moeilijk om te doen), kun je altijd gebruiken git config om het te doen ... maar nogmaals, dat gaat gewoon het .git/config bestand, hoe dan ook.

Er zijn natuurlijk manieren om een ​​remote branch automatisch te volgen tijdens het gebruik git checkout (door het passeren van de --track vlag, bijvoorbeeld), maar deze opdrachten werken met nieuwe takken, niet bestaande.


21
2018-02-06 15:17



In zeer kort

git branch --set-upstream yourLocalBranchName origin/develop

Dit zal je maken yourLocalBranchName de opgeroepen afgelegen tak volgen develop.


16
2017-10-09 07:19