git push naar specifieke branch

Zelfs na het lezen van deze vraag: git-push-current-branch, ben ik nog steeds moeite hebben om uit te zoeken hoe ik mijn git push-commando moet schrijven. Zoals vermeld in de vraaglink, wordt dit niet duidelijk uit de documentatie.

Ik wil graag mijn ‘echte wereld’-voorbeeld gebruiken. Het volgende is wat ik zie als ik het git statuscommando op het hoogste niveau van mijn branch uitvoer:

Op tak amd_qlp_tester

Je branch loopt 5 commits voor op ‘origin/amd_qlp_tester’.

enz…

Mijn vertakkingsnaam is amd_qlp_testermaar het was “vertakt” van de hoofdtak (als ik de termen verkeerd heb, komt dat door mijn SVN-achtergrond). Maar dan is er ook nog de naam origin/amd_qlp_testser

Dus hoe formuleer ik mijn push-commando?

Is het een van de volgende dingen?

git push origin/amd_qlp_tester
git push origin amd_qlp_tester
git push amd_qlp_tester
git push origin
git push

Antwoord 1, autoriteit 100%

git push origin amd_qlp_testerzal voor je werken. Als je gewoon git pushtypt, dan is de remote van de huidige branch de standaardwaarde.

Syntaxis van push ziet er als volgt uit – git push <remote> <branch>. Als je naar je afstandsbediening kijkt in het bestand .git/config, zie je een invoer [remote "origin"]die de url van de repository specificeert. Dus in het eerste deel van het commando vertel je Git waar de repository voor dit project te vinden is, en dan specificeer je gewoon een branch.


Antwoord 2, autoriteit 91%

Als je lokale tak en externe tak dezelfde naam hebben, kun je het gewoon doen:

git push origin branchName

Als de naam van uw lokale en externe filiaal verschillend is, kunt u het gewoon doen:

git push origin localBranchName:remoteBranchName

Antwoord 3, autoriteit 9%

De antwoorden waar je naar gelinkt hebt, gaan allemaal over het configureren van git zodat je zeer korte git push-commando’s kunt invoeren en ze kunt laten doen wat je maar wilt. Wat geweldig is, als je weet wat je wilt en hoe je dat in Git-Ese moet spellen, maar je bent nieuw in git! 🙂

In jouw geval is Petr Mensiks antwoordhet (nou ja, “a”) juiste antwoord. Dit is waarom:

Het commando git push remotewortelt in je .git/config-bestand om de naam “remote” te vinden (bijv. origin). Het configuratiebestand bevat:

  • waar (URL-gewijs) die externe “woont” (bijv. ssh://hostname/path)
  • waar pushen heen gaat, indien verschillend
  • wat wordt gepusht, als je niet hebt gezegd op welke branch(s) je moet pushen
  • wat wordt opgehaald als je git fetch remote
  • uitvoert

Toen je de repo voor het eerst kloonde – wanneer dat ook was – stelde git standaardwaarden in voor sommige hiervan. De URL is waar je van gekloond hebt en de rest, indien in- of uitgeschakeld, zijn allemaal “redelijke” standaardwaarden … of, hmm, zijndat?

Het probleem hiermee is dat mensen in de loop van de tijd van gedachten zijn veranderd over wat ‘redelijk’ is. Dus nu (afhankelijk van je versie van git en of je dingen in detail hebt geconfigureerd), kan git veel waarschuwingen afdrukken over standaardinstellingen die in de toekomst veranderen. Door de naam van de “te pushen branch” toe te voegen—amd_qlp_tester—(1) wordt het stil, en (2) wordt alleen die ene branch gepusht.

Als u gemakkelijker wilt pushen, kunt u dat doen met:

git push origin

of zelfs:

git push

maar of dat doet wat je wilt, hangt af van of je het eens bent met “vroege git-auteurs” dat de oorspronkelijke standaardwaarden redelijk zijn, of “later git-auteurs” dat de oorspronkelijke standaardwaarden niet redelijk zijn. Dus als je (uiteindelijk) alle configuratiedingen wilt doen, bekijk dan de vraag (en antwoorden) waarnaar je hebt gelinkt.

Wat betreft de naam origin/amd_qlp_testerin de eerste plaats: dat is eigenlijk een lokale entiteit (een naam die in je repo wordt bewaard), ook al wordt het een “remote branch” genoemd. Het is de beste gok van Git op “waar amd_qlp_testerdaar is”. Git werkt het bij wanneer het kan.


Antwoord 4, autoriteit 3%

Ik zou graag een bijgewerkt antwoord willen toevoegen – nu ik git al een tijdje gebruik, merk ik dat ik vaak de volgende commando’s gebruik om te pushen (met de originele vraag als voorbeeld):

  • git push origin amd_qlp_tester– push naar de branch in de remote genaamd originop remote-branch genaamd amd_qlp_tester.
  • git push -u origin amd_qlp_tester– hetzelfde als de vorige, maar stelt de upstream in die de lokale branch koppelt aan de remote branch, zodat je de volgende keer gewoon git push/pullindien nog niet gelinkt (hoeft maar Ă©Ă©n keer te doen).
  • git push– Zodra je de upstream hebt ingesteld, kun je deze kortere versie gebruiken.

Opmerking-uoptie is de korte versie van --set-upstream– ze zijn hetzelfde.

Other episodes