Wie kann ich den Unterschied
zwischen einem lokalen Branch und einem Remote-Branch sehen?
Antworten
Zu viele Anzeigen?Der einfache Weg:
git fetch
git log -p HEAD..FETCH_HEAD
Zuerst werden die Änderungen von Ihrem Standard-Remote (origin) abgerufen. Dies wird automatisch erstellt, wenn Sie ein Repository klonen. Sie können auch explizit sein: git fetch origin master
.
Dann wird git log
verwendet, um Ihren aktuellen Branch mit dem gerade abgerufenen zu vergleichen. (Die Option -p
(Patch generieren) zeigt die Unterschiede an.)
Zusammenfassung: git diff
Wenn ich Git in der Shell benutze, orientiere ich mich gerne zuerst, indem ich mich umschaue.
Hier ist ein Befehl, um alle Branches anzuzeigen:
$ git branch -a # (oder git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
Hier habe ich zwei lokale Branches (my-branch
und master
) und vier Remote-Branches (some-branch
, some-other-branch
, master
und my-branch
).
Außerdem signalisiert das Sternchen neben my-branch
, dass ich mich momentan in diesem Branch befinde (du würdest das auch wissen, wenn du den Befehl git status
verwenden würdest, der folgendes ausgeben würde: Auf Branch my-branch.
).
Hinweis: Die Remote-Branches in der Git Bash-Shell werden rot dargestellt, während die lokalen in grün angezeigt werden.
Wenn du nur die Remote-Branches anzeigen möchtest:
$ git branch -r # (oder git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
Um nur lokale Branches anzuzeigen, könntest du versucht sein, git branch -l
zu verwenden, aber das ist ein vollkommen anderer Befehl. Verwende zur Anzeige lokaler Branches git branch
ohne Optionen
$ git branch
* my-branch
master
Um eine Übersicht über die grundlegenden Branch-Optionen zu vervollständigen, gibt es das --list
, das im Gegensatz zu dem, was du erwarten würdest, dazu dient, das Filtern zu ermöglichen. Verwende es mit einem Muster wie diesem:
$ git branch --list 'my*'
* my-branch
Du kannst --list
auch mit den Optionen -a
und -r
kombinieren, aber passe dein Muster entsprechend an (denke daran: Remote-Branches beginnen mit "remotes").
Beispiel:
# Das wird alle Branches (lokale & Remote) anzeigen, die mit my beginnen
$ git branch --list 'my*' -a
* my-branch
# Besser: Das Muster enthält den Remote-Branch
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
Dokumentation: git-branch
Jetzt kannst du beliebige zwei Branches vergleichenz von allen verfügbaren (du kannst auch zwei lokale oder zwei Remote-Banches vergleichen).
Hier vergleiche ich den lokalen mit dem Remote-Branch my-branch
. Sie sind synchronisiert, daher erhalte ich keine Ausgabe:
$ git diff my-branch remotes/origin/my-branch
Hinweis: Die vollständigen Namen der Branches müssen ohne Anführungszeichen angegeben werden.
Ich kann auch den lokalen my-branch
mit dem Remote master
vergleichen. Hier erhalte ich eine Ausgabe, weil der Remote-Branch my-branch
nicht in den Master-Branch eingefügt wurde.
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
So mache ich es.
# Um Ihre lokale Kopie zu aktualisieren.
git fetch --all
Dadurch werden alle Änderungen vom Remote-Repository abgeholt, sodass beim Überprüfen von Unterschieden die Differenz mit dem Remote-Branch verglichen wird.
# Um alle Branches anzuzeigen.
git branch -a
Der obige Befehl wird alle Branches anzeigen.
# Um zu dem Branch zu wechseln, dessen Unterschiede Sie überprüfen möchten.
git checkout
# Um zu überprüfen, auf welchem Branch Sie sich befinden, verwenden Sie
git branch
(oder)
git status
Jetzt können Sie die Unterschiede wie folgt überprüfen.
git diff origin/
Dadurch wird Ihr lokaler Branch mit dem Remote-Branch verglichen.
Hier ist eine Kurzantwort, wenn Sie Ihren aktuellen Branch mit etwas vergleichen möchten, das Sie git pull
möchten.
git fetch
git diff FETCH_HEAD
Der erste Befehl ermittelt, welcher Remote-Branch Ihrem aktuellen Branch entspricht. Ein Artefakt dieser Berechnung ist der Verweis FETCH_HEAD
. Dann verwendet der zweite Befehl diesen Verweis, um mit dem zu vergleichen, was Ihr aktueller Branch hat.