Heim  >  Artikel  >  Entwicklungswerkzeuge  >  Was bedeutet push -u in Git

Was bedeutet push -u in Git

WBOY
WBOYOriginal
2022-07-01 10:36:5017810Durchsuche

In Git bedeutet „push -u“, die Version des lokalen Zweigs in den Remote-Merge hochzuladen und beim Hinzufügen des Parameters „-u“ den Standardwert von push in den Remote-Zweig aufzuzeichnen. Dies bedeutet, dass beim nächsten Mal mit dem Push fortgefahren wird Beim Arbeiten an einem Remote-Zweig kann der Push-Befehl als „git push“ abgekürzt werden.

Was bedeutet push -u in Git

Die Betriebsumgebung dieses Artikels: Windows 10-System, Git-Version 2.30.0, Dell G3-Computer.

Was bedeutet push -u in git?

Der Befehl git push wird verwendet, um die lokale Zweigversion auf die Fernbedienung hochzuladen und zusammenzuführen.

Im Allgemeinen wird der Befehl git push verwendet, wenn ein lokales Lager in ein entferntes Lager verschoben wird. Als Anfänger habe ich einige Tutorials im Internet gesehen. Einige von ihnen bringen beim Git-Push einen -u-Parameter mit, andere nicht. Es gibt keinen Unterschied in den tatsächlichen Ergebnissen des Pushs. Ich bin nur neugierig, was der Parameter -u bewirkt?

Nachdem ich eine Weile gesucht hatte, habe ich einige Erklärungen und Analysen aller Beteiligten zusammengefasst und aufgezeichnet.

Parameteranalyse:

Zuallererst gibt es diese Beschreibung für Git Push:

-u

–set-upstream

Fügen Sie für jeden Zweig, der aktuell ist oder erfolgreich gepusht wurde, Upstream (Tracking) hinzu )-Referenz, die von git-pull(1) und anderen Befehlen ohne Argumente verwendet wird. Weitere Informationen finden Sie unter branch.8a11bc632ea32a57b3e3693c7987c420.merge in git-config(1).

In dieser Beschreibung können Sie sehen: u Die Parameter beziehen sich auf die folgende Variable

branch.8a11bc632ea32a57b3e3693c7987c420.merge

branch.8a11bc632ea32a57b3e3693c7987c420.merge und branch.8a11bc632ea32a57b3e3693c7987c420.remote definieren zusammen den Upstream-Zweig des gegebenen Zweigs. Es teilt Git Fetch/Git Pull mit, welcher Zweig zusammengeführt werden soll, und kann sich auch auf Git Push auswirken.

Und Upstream bezieht sich auf das Haupt-Repository, aus dem andere abrufen, z. B. Ihr GitHub-Repository. Die Option -u richtet automatisch den Upstream für Sie ein und verknüpft Ihr Repository mit einem zentralen Repository. Auf diese Weise „weiß“ Git in Zukunft, wohin Sie pushen und woher Sie ziehen möchten, sodass Sie Git Pull oder Git Push ohne Parameter verwenden können.

Wenn Sie git aus einem Zweig ziehen, ohne die Quell-Remote oder den Quellzweig anzugeben, schaut sich git die Einstellung branch.8a11bc632ea32a57b3e3693c7987c420.merge an, um zu wissen, woher es ziehen soll. Und es ist der Befehl git push -u, der diese Informationen für den Zweig festlegt, den Sie pushen möchten.

An diesem Punkt ist, um es einfach auszudrücken, das Mitbringen des Parameters -u tatsächlich gleichbedeutend mit dem Aufzeichnen des Standardwerts von push in den Remote-Zweig, sodass wir das nächste Mal, wenn wir den Remote-Zweig weiter pushen möchten, den Push-Befehl verwenden können abgekürzt Just git push.

Beispielanzeige:

Ein Beispiel wird unten gezeigt, um diesen Punkt zu veranschaulichen.

andy@AndyMacBookPro:/usr/local/github/andy/php-examples$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> test

Dies ist das Ergebnis, wenn Sie den Parameter -u vorher nicht verwendet und später den Branch-Parameter, den Sie abrufen möchten, weggelassen haben. Ziehen Sie, weil für den aktuellen Zweig kein Track vorhanden ist. Daher weiß er nicht, woher Sie ziehen möchten. Dies ist also die Bedeutung des Parameters -u, der den Trach-Zweig angibt.

Tatsächlich können Sie nach der Angabe von -u zu .git/config gehen, um sich die GIT-Konfigurationsdatei anzusehen. Sie können die Aufzeichnung des Zweigs „test“ unten sehen:

[branch "master"] 
 remote = origin
merge = refs/heads/master 
[branch "test"]
remote = origin
merge = refs/heads/test

Auf diese Weise kann Git das erkennen Remote- und Remote-Dateien werden im aktuellen Test zusammengeführt. Wenn Sie beim Git-Push den Parameter -u nicht angeben, gibt es in der Konfiguration kein Zweigelement „Test“.

 [branch "master"]
    remote = origin
    merge = refs/heads/master

Konfigurationsanweisungen, dies teilt Git zwei Dinge mit:

Wenn Sie sich im Master-Zweig befinden, ist die Standard-Remote der Ursprung.

Bei Verwendung in einem Git-Pullmaster-Zweig (kein Remote- und Zweig angegeben) verwenden Sie den Standard-Remote (Quelle) und führen Sie Änderungen aus dem Remote-Master-Zweig zusammen.

Konfigurationsänderung

Sie können manuell zu .git/config gehen, um den Inhalt der GIT-Konfigurationsdatei zu ändern, oder Sie können diese Optionen über die Befehlszeile festlegen.

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

Wenn es mit Befehlen konfiguriert wird, verfügt es über bestimmte Fehlerkorrekturfunktionen. Sie haben beispielsweise einen Zweig eingegeben, der nicht existiert, oder Sie haben den Git-Remote-Add-Vorgang nicht ausgeführt. In neueren Git-Versionen hoffe ich, dass Sie git branch --set-upstream-to=origin/master master verwenden. Tatsächlich ist die Ausführung des Befehls git push -u origin master mit dem hinzugefügten Parameter -u gleichbedeutend mit der Ausführung von

git push origin master und

git branch --set-upstream master origin/master.

Wenn Sie also Code an einen Remote-Zweig pushen und weiterhin an den Remote-Zweig pushen möchten, können Sie den Parameter -u zum Push-Befehl hinzufügen, um die nachfolgende Push-Befehlseingabe zu vereinfachen.

Empfohlenes Lernen: „

Git Tutorial

Das obige ist der detaillierte Inhalt vonWas bedeutet push -u in Git. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn