
Senthil Kumaran
Ich kenne, Ursprung ist ein Begriff für das entfernte Repository und Meister ist die Filiale dort.
Ich lasse hier absichtlich den „Kontext“ weg und hoffe, dass die Antwort nicht vom Kontext abhängen sollte. Was ist also in Git-Befehlszeilen der Unterschied zwischen Herkunft/Meister und Herkunft Meister. Gibt es einen eindeutigen Weg, um zu verstehen, wann zu verwenden ist Herkunft/Meister und wann sollte ich verwenden Herkunft Meister?

Dietrich Ep
(Notiz: Als diese Frage ursprünglich gepostet wurde, war „master“ der Standardname für Branches in Git. Da “main” jetzt der Standardname ist, wurde diese Antwort aktualisiert, um “main” zu verwenden, in der Hoffnung, dass dies für Leute, die neu bei Git sind, natürlicher ist.)
Hier gibt es eigentlich drei Dinge: origin main
ist zwei verschiedene Dinge, und origin/main
ist eine Sache. Insgesamt drei Dinge.
Zwei Filialen:
main
ist eine Ortsgruppe
origin/main
ist ein Remote-Tracking-Zweig (der eine lokale Kopie des Zweigs namens “main” auf der Fernbedienung namens “origin”)
Eine Fernbedienung:
origin
ist eine Fernbedienung
Ist origin/main remote?
Die origin/main
Filiale ist lokal! Jedes Mal, wenn Sie abholen origin
, origin/main
wird aktualisiert. Aber, origin/main
kann veraltet sein, und es ist sogar möglich, dass main
existiert nicht mehr auf origin
. Du kannst den … benutzen --prune
Möglichkeit (-p
) mit git fetch
Remote-Tracking-Zweige automatisch löschen, wenn der Zweig, den sie verfolgen, gelöscht wird.
Die origin/main
Zweig ist nicht ein Verweis oder Zeiger auf die main
abzweigen origin
. Es ist eine lokale Kopie.
Beispiel: in zwei Schritten ziehen
Seit origin/main
ein Zweig ist, können Sie ihn zusammenführen. Hier ist ein Pull in zwei Schritten:
Schritt eins, holen main
von der Fernbedienung origin
. Die main
abzweigen origin
abgerufen und die lokale Kopie benannt origin/main
.
git fetch origin main
Dann verschmelzen Sie origin/main
hinein main
.
git merge origin/main
Dann können Sie Ihre neuen Änderungen einspielen main
zurück zu origin
:
git push origin main
Mehr Beispiele
Sie können mehrere Zweige nach Namen abrufen …
git fetch origin main stable oldstable
Sie können mehrere Zweige zusammenführen …
git merge origin/main hotfix-2275 hotfix-2276 hotfix-2290
Können Sie einen anderen Namen verwenden?
Meine örtliche Niederlassung muss nicht genannt werden main
wenn ich nicht will. Er muss nicht denselben Namen wie der entfernte Zweig haben! Nehmen wir an, ich möchte meinen Zweig benennen alice
aber immer noch verfolgen origin/main
:
Das kann ich ganz einfach:
git checkout -b alice --track origin/main
Sie können sehen, dass der lokale Zweig benannt ist alice
aber die entfernte Verzweigung ist benannt main
und die lokale Kopie ist origin/main
. Das ist völlig in Ordnung! Es könnte ein bisschen verwirrend sein, aber vielleicht haben Sie bereits eine unterschiedlich Filiale benannt main
und Sie müssen zu einem anderen Zweig wechseln, um an einer anderen Änderung zu arbeiten.

Frauref
origin/master
ist eine Entität (da es sich nicht um eine physische Niederlassung handelt) vertreten der Zustand der master
Verzweigung auf der Fernbedienung origin
.
origin master
ist die Filiale master
auf der Fernbedienung origin
.
Also wir haben diese:
- origin/master (Eine Darstellung oder ein Zeiger auf den entfernten Zweig)
- Meister – (eigentliche Filiale)
- (eigentliche Filiale)
- (eigentliche Filiale)
- (eigentliche Filiale)
Beispiel (in lokaler Filiale master
):
git fetch # get current state of remote repository
git merge origin/master # merge state of remote master branch into local branch
git push origin master # push local branch master to remote branch master
origin/master
ist die Fernbedienung master
sich verzeigen
Normalerweise nachdem Sie a git fetch origin
Um alle Änderungen vom Server zu bringen, würden Sie Folgendes tun: git rebase origin/master
, um Ihre Änderungen zu rebasen und den Zweig auf den neuesten Index zu verschieben. Hier, origin/master
bezieht sich auf den Remote-Zweig, weil Sie GIT im Grunde sagen, dass er die rebasieren soll origin/master
auf den aktuellen Zweig verzweigen.
Du würdest verwenden origin master
beim Schieben zum Beispiel. git push origin master
weist GIT einfach an, das lokale Repository in das Remote-Repository zu verschieben master
sich verzeigen.
Ursprung ist ein Name für Remote-Git-URL. Unten kann es noch viele weitere Fernbedienungen geben.
bangalore => bangalore.example.com:project.git
boston => boston.example.com:project.git
soweit origin/master (Beispiel bangalore/master) geht, ist es ein Zeiger auf “master” commit on Bangalore Seite? ˅ . Sie sehen es in Ihrem Klon.
Es ist möglich, dass das entfernte Bangalore fortgeschritten ist, seit Sie “Fetch” oder “Pull” ausgeführt haben.
Angesichts der Tatsache, dass Sie wechseln können origin/master
(obwohl im getrennten Zustand), während Sie Ihr Netzwerkkabel ausgesteckt haben, muss es eine lokale Darstellung des sein master
Filiale bei origin
.
Bevor wir uns dem Unterschied zuwenden, müssen wir verstehen, was die Bedeutung von ist Ursprung im Git.
Ursprung ist nichts anderes als der ursprüngliche Name, der dem entfernten Repository gegeben wurde. Origin ist nur ein Standort, das ist alles. Im folgenden Beispiel ist die Repository-URL die Ursprung oder die Quelle der Wahrheit, wo sich Ihr Code befindet.
git-Klon https://github.com/mycode/git-awsomecode.git
Jetzt kann dieser Ursprung oder die Quelle der Wahrheit für Ihr Repository Zweige haben, dies umfasst Master oder Develop oder Sie nennen es.
Ausgehend vom Kontext können wir nun leicht unter den folgenden Dingen meinen.
- Herkunft Meister: Ich bin ein Master-Zweig, der sich auf dem Remote-Repository befindet, das (Origin) genannt wird.
Also wenn ich tippe Git-Pull-Origin-Master Was geschieht?.
Dadurch wird mein lokaler Master-Zweig (auf meinem lokalen Computer) aktualisiert, und alle Änderungen werden auf dem Remote-Master-Zweig (dh dem Ursprungs-Master) verfügbar sein.
Jetzt möchte ich, dass meine Änderungen mit meinem lokalen Master-Branch zusammengeführt werden, wie kann ich das erreichen?
git Ursprung/Master zusammenführen
Dadurch wird mein lokaler Master-Branch mit meinen Änderungen aktualisiert. Der Grund für origin/master ist nur eine Namenskonvention, die Sie Ihren lokalen Master-Zweig origin/master oder abcd nennen könnten. Sie hätten Ihren lokalen Zweig also anstelle von origin/master einfach master nennen können, und der Befehl für git wäre Git-Merge-Master.
Wie würde ich meinen Remote-Master-Branch mit all den lokalen Änderungen aktualisieren?
Git-Push-Origin-Master
Dieser Befehl besagt, dass alle meine lokalen Änderungen an den Ursprung (dh das Repository (https://github.com/mycode/git-awsomecode.git)) in den Master-Zweig.

brennobemoura
Ich schlage vor, „develop“ und „master“ mit diesem Befehl zusammenzuführen
git checkout master
git merge --commit --no-ff --no-edit develop
Weitere Informationen finden Sie unter https://git-scm.com/docs/git-merge
9630900cookie-checkWas ist in Git der Unterschied zwischen origin/master und origin master?yes
mögliches Duplikat von Git-Branching: Master vs. Origin/Master vs. Remotes/Origin/Master
– Gabriel Moretti
20. Mai 2015 um 3:52 Uhr
Es mag eine doppelte Frage sein, aber die Antwort von @Dietrich Epp unten ist eine klare Erklärung der Unterschiede, die dieses Problem nicht verwirrender macht.
– Suncat2000
8. April 2021 um 11:38 Uhr