Vraag Hoe creëer je een remote Git branch?


Ik heb een lokale vestiging gecreëerd die ik stroomopwaarts wil 'pushen'. Er is hier een vergelijkbare vraag over Stack Overflow over het volgen van een nieuw aangemaakte remote branch.

Mijn workflow is echter iets anders. Eerste Ik wil een lokaal filiaal creëren en ik zal het alleen stroomopwaarts duwen als ik tevreden ben en mijn filiaal wil delen.

  • Hoe zou ik dat doen? (mijn google-zoekopdrachten leken niets te verzinnen).
  • Hoe kan ik mijn collega's vertellen om het uit de upstream-repository te halen?

UPDATE Met Git 2.0 is er een eenvoudiger antwoord Ik heb hieronder geschreven: https://stackoverflow.com/a/27185855/109305


2705
2017-10-05 09:21


oorsprong


antwoorden:


Eerst maakt u uw vestiging lokaal aan:

git checkout -b <branch-name> # Create a new branch and check it out

De remote branch wordt automatisch gemaakt wanneer u deze naar de externe server pusht. Dus als je er klaar voor bent, kun je gewoon doen:

git push <remote-name> <branch-name> 

Waar <remote-name> is typisch origin, de naam die git geeft aan de afstandsbediening waar je van hebt gekloond. Je collega's zouden dan gewoon dat filiaal trekken en het wordt automatisch lokaal gemaakt.

Merk echter op dat het formaat formeel is:

git push <remote-name> <local-branch-name>:<remote-branch-name>

Maar als u er één weglaat, wordt ervan uitgegaan dat beide vertakkingsnamen hetzelfde zijn. Dit gezegd hebbende, als een woord van voorzichtigheid, maak niet de kritische fout om alleen te specificeren :<remote-branch-name> (met de dubbele punt), of de externe vertakking wordt verwijderd!

Dus dat is een vervolg git pull weet wat te doen, misschien wilt u in plaats daarvan:

git push --set-upstream <remote-name> <local-branch-name> 

Zoals hieronder beschreven, de --set-upstream optie stelt een upstream branch in:

Voor elke branche die up-to-date is of   met succes ingedrukt, voeg stroomopwaarts toe   (tracking) referentie, gebruikt door   argumentloze git-pull (1) en andere   commando's.


3288
2017-10-05 09:29



Eerst moet u uw filiaal lokaal maken

git checkout -b your_branch

Hierna kunt u lokaal in uw branche werken, wanneer u klaar bent om de branch te delen, drukt u erop. Het volgende commando duwt de vertakking naar de oorsprong van de externe repository en volgt deze op

git push -u origin your_branch

Teamgenoten kunnen je kantoor bereiken door te doen:

git fetch
git checkout origin/your_branch

Je kunt doorgaan met werken in de branche en duwen wanneer je maar wilt zonder argumenten door te geven om te pushen (argumentloos git push duwt de master naar remote master, je lokale branch naar remote your_branch, etc ...)

git push

Teamgenoten kunnen naar jouw branch pushen door commits te doen en dan expliciet te pushen

... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch

Of de tak volgen om de argumenten te vermijden om te pushen

git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push

796
2017-07-26 01:09



Eenvoudige Git 2.0 + -oplossing:

Vanaf Git 2.0 het gedrag is eenvoudiger geworden:

Je kunt git configureren met push.default = current om het leven gemakkelijker te maken:

Ik heb dit toegevoegd, dus nu kan ik een nieuwe branch upstream pushen

$ git push -u

-u zal remote tak met dezelfde naam volgen. Nee met deze configuratie raad je automatisch de externe verwijzing naar git push aan. Van git.config documentatie:

push.default 

Bepaalt de actie die push moet nemen als er geen refspec expliciet wordt gegeven.

push.default = current - druk op de huidige tak om een ​​filiaal bij te werken met de   dezelfde naam aan de ontvangende kant. Werkt in zowel centrale als niet-centrale workflows.

Voor mij is dit een goede vereenvoudiging van mijn dagelijkse Git-workflow. De configuratie-instelling zorgt voor de 'gebruikelijke' gebruikssituatie waarbij u lokaal een filiaal toevoegt en deze op afstand wilt maken. Ook kan ik net zo gemakkelijk lokale branches van afstandsbedieningen creëren door gewoon te doen git co remote_branch_name (in tegenstelling tot gebruiken --set-upstream-to vlag).

Ik ken deze vraag en de geaccepteerde antwoorden zijn nogal oud, maar het gedrag is veranderd, zodat er nu configuratie-opties bestaan ​​om uw workflow eenvoudiger te maken.

Om toe te voegen aan uw globale Git-configuratie, voert u dit uit op de opdrachtregel:

$ git config --global push.default current

241
2017-11-28 09:46



Zoals vermeld in de vorige antwoorden,

git push <remote-name> <local-branch-name>:<remote-branch-name>

is voldoende om een ​​lokale vestiging te duwen.

Je collega's kunnen met deze opdracht alle remote branches (inclusief nieuwe) trekken:

git remote update

Vervolgens, om wijzigingen aan te brengen op de tak, de gebruikelijke stroom:

git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>

65
2017-12-27 14:12



Creëer lokaal een nieuwe vestiging op basis van de huidige branche:

git checkout -b newbranch

Breng wijzigingen aan zoals u dat normaal zou doen. Duw het dan stroomopwaarts:

git push -u origin HEAD

Dit is een snelkoppeling om de huidige branch naar een tak met dezelfde naam te duwen origin en volg het zodat je het niet hoeft op te geven origin HEAD in de toekomst.


48
2018-02-24 14:58



Als je eigenlijk een remote branch wilt maken zonder de lokale branch, kun je het als volgt doen:

git push origin HEAD:refs/heads/foo

Het duwt wat je HEAD is om te vertakken foo dat bestond niet op de afstandsbediening.


32
2017-11-25 15:29



Als u een branch van de huidige branch wilt maken

git checkout -b {your_local_branch_name} 

je wilt een filiaal van een afgelegen filiaal, je kunt het proberen

git checkout -b {your_local_branch_name} origin/<remote_branch_name>

Als u klaar bent met wijzigingen, kunt u het bestand toevoegen.

git add -A or git add <each_file_names>

Doe dan lokaal een commit

git commit -m 'your commit message'

Wanneer u naar repo op afstand wilt pushen

git push -u origin <your_local_branch_name>

Alles samen zal zijn

git checkout -b bug_fixes 

of Als je een filiaal van een remote branch wilt maken zeg dan ontwikkeling 

git checkout -b bugfixes oorsprong/ontwikkeling

Je kunt naar de branch pushen om de remote repo te starten

git push -u origin **bug_fixes**

Telkens wanneer u uw filiaal van een ander filiaal wilt bijwerken, zegt u meester.

git pull origin master.


23
2018-05-01 06:12



Eerst maak je de branch lokaal aan:

git checkout -b your_branch

En dan om de branch op afstand te creëren:

git push --set-upstream origin your_branch

Opmerking: dit werkt op de latests-versies van git:

$ git --version
git version 2.3.0

Proost!


22
2018-04-21 23:43



Maak de branch op uw lokale machine en schakel in deze branche:

$ git checkout -b [name_of_your_new_branch]

Druk op de tak op github:

$ git push origin [name_of_your_new_branch]

Als u iets in uw branche wilt doen, zorg er dan voor dat u in uw branche bent.

U kunt alle branches zien die zijn gemaakt met behulp van:

$ git branch

Welke zal laten zien:

* approval_messages
  master
  master_clean

Voeg een nieuwe afstandsbediening toe voor uw filiaal:

$ git remote add [name_of_your_remote] 

Veranderingen van je commit naar je branch verplaatsen:

$ git push origin [name_of_your_remote]

Werk uw filiaal bij als de originele tak uit de officiële repository is bijgewerkt:

$ git fetch [name_of_your_remote]

Vervolgens moet u zich aanmelden om wijzigingen samen te voegen, als uw branch is afgeleid van de ontwikkeling die u moet doen:

$ git merge [name_of_your_remote]/develop

Verwijder een filiaal op uw lokale bestandssysteem:

$ git branch -d [name_of_your_new_branch]

Om het verwijderen van de lokale branch op uw bestandssysteem te forceren:

$ git branch -D [name_of_your_new_branch]

Verwijder de branch op github:

$ git push origin :[name_of_your_new_branch]

Hier alle informatie

Ander bestaand project


16
2018-05-27 11:39



Eenvoudigste oplossing ... Drumm Roll. git versie 2.10.1 (Apple Git-78)

1) git checkout -b localBranchNameThatDoesNotExistInRemote

2) Do your changes , and go a git commit 

3) git push origin localBranchNameThatDoesNotExistInRemote --force

N.B. - De vertakking die u zojuist hebt gemaakt in uw lokale omgeving en de externe niet-bestaande vertakking waar u probeert te duwen, moet dezelfde naam hebben.


13
2018-03-18 06:23



Nu met git, kun je gewoon typen als je in de juiste tak bent

git push --set-upstream origin <remote-branch-name>

en git creëer voor jou de oorsprongstak.


8
2017-10-27 17:05