Ich würde gerne wissen, ob mein lokales Repo auf dem neuesten Stand ist (und wenn nicht, würde ich im Idealfall die Änderungen sehen).
Wie könnte ich das überprüfen, ohne git fetch
oder git pull
?
Ich würde gerne wissen, ob mein lokales Repo auf dem neuesten Stand ist (und wenn nicht, würde ich im Idealfall die Änderungen sehen).
Wie könnte ich das überprüfen, ohne git fetch
oder git pull
?
Antworten:
Versuchen Sie git fetch --dry-run
Das Handbuch ( git help fetch
) sagt:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
taucht beim Laufen nichts auf?
--all
?
git pull
ist ungefähr gleichbedeutend mit a git fetch && git merge
. Wenn Sie den Abruf zu irgendeinem Zeitpunkt ohne das ausgeführt haben --dry-run
, haben Sie die Dinge bereits lokal abgerufen.
git remote show origin
Ergebnis:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
Verwenden git remote update
Sie diese Option zuerst , um Ihre Remote-Refs auf den neuesten Stand zu bringen. Dann können Sie eines von mehreren Dingen tun, wie zum Beispiel:
git status -uno
wird Ihnen sagen, ob der Zweig, den Sie verfolgen, vor, hinter oder divergiert ist. Wenn nichts gesagt wird, sind lokal und remote identisch. Beispielergebnis:Auf Zweig DEV
Ihre Filiale liegt um 7 Commits hinter 'origin / DEV' und kann schnell weitergeleitet werden.
(Verwenden Sie "git pull", um Ihren lokalen Zweig zu aktualisieren.)
git show-branch *master
zeigt Ihnen die Commits in allen Zweigen, deren Namen auf 'master' enden (z. B. master und origin / master).Wenn Sie -v
mit git remote update ( git remote -v update
) arbeiten, können Sie sehen, welche Zweige aktualisiert wurden, sodass Sie keine weiteren Befehle benötigen.
git remote update ; git status -uno
Ich habe es gelöst. git fetch --dry-run
gab keine Ausgabe, selbst in Fällen, in denen sich das Lokal hinter der Fernbedienung befand.
git remote -v update
ist die Antwort für mich.
Sie können git status -uno
damit überprüfen, ob Ihre lokale Niederlassung mit der ursprünglichen Niederlassung auf dem neuesten Stand ist.
git remote update ; git status -uno
den Trick gemacht! Das git fetch --dry-run
gab keine Ausgabe, als ich es erwartet hatte (und git pull
Dinge ziehen würde).
Nicht wirklich - aber ich sehe nicht, wie git fetch
es wehtun würde, da es keine Ihrer lokalen Niederlassungen verändert.
Eine andere Alternative besteht darin, den Status des Remote-Zweigs anzuzeigen und
git show-branch remote/branch
ihn als Vergleich git show-branch *branch
zu verwenden, um den Zweig in allen Fernbedienungen sowie in Ihrem Repository zu sehen! Weitere Informationen finden Sie in dieser Antwort unter https://stackoverflow.com/a/3278427/2711378
Sie müssen zwei Befehle eingeben:
Sie müssen ausgeführt werden, git fetch
bevor Sie Ihr lokales Repository mit den Dateien auf Ihrem Remote-Server vergleichen können.
Dieser Befehl aktualisiert nur Ihre Remote-Tracking-Zweige und wirkt sich erst dann auf Ihren Arbeitsbaum aus, wenn Sie git merge
oder anrufen git pull
.
Um den Unterschied zwischen Ihrem lokalen Zweig und Ihrem Remote-Tracking-Zweig nach dem Abrufen zu erkennen, können Sie git diff oder git cherry verwenden, wie hier erläutert.
Dies ist ohne git fetch
oder nicht möglich git pull
. Wie können Sie feststellen, ob das Repository "aktuell" ist oder nicht, ohne zum Remote-Repository zu gehen, um zu sehen, was "aktuell" überhaupt bedeutet?
git pull
, was das OP in seiner Frage ausdrücklich verbietet.
git status -uno
Dies funktioniert und man kann auch git show-branch *master
den Status aller Hauptzweige anzeigen! Wollen Sie immer noch sagen, dass es unmöglich ist? Sie können den Status jeder Filiale anzeigen, solange Sie Zugriff auf die Fernbedienung haben!
git status
nur den Status Ihrer lokalen Refs an, nicht , ob Ihre lokalen Refs mit den Remote-Refs auf dem neuesten Stand sind. Nochmals: Es ist einfach logisch unmöglich zu wissen, wie der Status des Remote-Repos ist, ohne den Status des Remote-Repos zu erhalten. Zeitraum. Dies sind nur die Grundgesetze der Raumzeit.
Ich habe versucht, meine Antwort zu formatieren, konnte es aber nicht. Bitte stapeln Sie das Überlauf-Team, warum das Posten von Antworten so schwierig ist.
Trotzdem,
Antwort:
git fetch origin
git status (Sie sehen ein Ergebnis wie "Ihr Zweig liegt um 9 Commits hinter 'origin / master'")
, um auf Remote-Änderungen zu aktualisieren: git pull