Frage
Was sind die Git-Befehle für den folgenden Workflow?
Szenario
Ich habe aus einem Repository geklont und einige eigene Commits für mein lokales Repository durchgeführt. In der Zwischenzeit haben meine Kollegen Commits für das Remote-Repository vorgenommen. Jetzt möchte ich:
Überprüfen Sie, ob im Remote-Repository neue Commits von anderen Personen vorhanden sind, z
origin
.Angenommen, seit meinem letzten Abruf gab es 3 neue Commits im Remote-Repository. Ich möchte die Commits des Remote-Repositorys unterscheiden, dh
HEAD~3
mitHEAD~2
,HEAD~2
mitHEAD~1
undHEAD~1
mitHEAD
.Nachdem ich weiß, was sich aus der Ferne geändert hat, möchte ich die neuesten Commits von den anderen erhalten.
Meine bisherigen Erkenntnisse
Für Schritt 2: Ich kenne die caret Notation HEAD^
, HEAD^^
usw. und die Tilde - Notation HEAD~2
, HEAD~3
usw.
Für Schritt 3: Das heißt, ich denke, nur ein git pull
.
Antworten:
Sie können
git fetch origin
den Remote-Zweig in Ihrem Repository aktualisieren, um auf die neueste Version zu verweisen. Für einen Unterschied gegen die Fernbedienung:Ja, Sie können auch die Caret-Notation verwenden.
Wenn Sie die Remote-Änderungen akzeptieren möchten:
quelle
git diff HEAD origin/master
so dass der Diff zeigt, was angewendet wird, wenn ich die Remote-Änderungen akzeptiere.Fand dies auf der Antwort auf Überprüfen, ob Pull in Git benötigt wird
quelle
git pull <remote> <branch>
danach eine machen, sobald ich pushen muss, weil die Spitze meiner lokalen Niederlassung hinter dem entfernten Gegenstück war.git remote update -v
ich habeerror: unknown switch `v'
git remote -v update
nichtgit remote update -v
Ein guter Weg, um eine synthetische Sicht auf das zu bekommen, was unter "Ursprung" vor sich geht, ist:
quelle
Ich benutze nur
Letzterer meldet dann, wie viele Commits hinter meinem Local stehen. (wenn überhaupt)
dann
um mein lokales auf den neuesten Stand zu bringen :)
quelle
Meine reguläre Frage lautet eher "irgendetwas Neues oder Geändertes im Repo", also ist das, was geändert wurde, praktisch. Fand es hier .
quelle
Eine mögliche Lösung
Dank der Lösung von Alan Haggai Alavi konnte ich den folgenden potenziellen Workflow entwickeln:
Schritt 1:
Schritt 2:
Schritt 3:
quelle
git diff origing/master^ origing/master^^
git status
zeigt nicht immer den Unterschied zwischen Master und Origin / Master, auch nach einem Abruf. Wenn die Kombinationgit fetch origin && git status
funktionieren soll, müssen Sie die Tracking-Informationen zwischen lokalem Zweig und Ursprung angeben:Für Hauptzweig:
quelle
da es bisher nicht vorgeschlagen wurde ... und ich finde es sehr nützlich ...
Ich benutze einfach
Um die Remote-Änderungen abzurufen, und dann sehe ich sowohl lokale als auch ausstehende Remote-Commits (und die damit verbundenen Änderungen) mit dem netten Gitk-Tool ( https://git-scm.com/docs/gitk ) an, das das Argument --all wie enthält
quelle