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 fetchoder 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 fetchoder 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-runtaucht beim Laufen nichts auf?
--all?
git pullist 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 updateSie 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 -unowird 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 -vmit 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 -unoIch habe es gelöst. git fetch --dry-rungab keine Ausgabe, selbst in Fällen, in denen sich das Lokal hinter der Fernbedienung befand.
git remote -v updateist die Antwort für mich.
Sie können git status -unodamit überprüfen, ob Ihre lokale Niederlassung mit der ursprünglichen Niederlassung auf dem neuesten Stand ist.
git remote update ; git status -unoden Trick gemacht! Das git fetch --dry-rungab keine Ausgabe, als ich es erwartet hatte (und git pullDinge ziehen würde).
Nicht wirklich - aber ich sehe nicht, wie git fetches 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/branchihn als Vergleich git show-branch *branchzu 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 fetchbevor 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 mergeoder 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 fetchoder 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 -unoDies funktioniert und man kann auch git show-branch *masterden 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 statusnur 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