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 status
commando 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_tester
maar 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_tester
zal voor je werken. Als je gewoon git push
typt, 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 remote
wortelt 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_tester
in 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_tester
daar 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 genaamdorigin
op remote-branch genaamdamd_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 gewoongit push/pull
indien nog niet gelinkt (hoeft maar Ă©Ă©n keer te doen).git push
– Zodra je de upstream hebt ingesteld, kun je deze kortere versie gebruiken.
Opmerking-u
optie is de korte versie van --set-upstream
– ze zijn hetzelfde.