1504 Stimmen

Wie vergleicht man einen lokalen Git-Zweig mit seinem Remote-Zweig

Wie kann ich den Unterschied zwischen einem lokalen Branch und einem Remote-Branch sehen?

35voto

Brent Faust Punkte 8553

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.)

27voto

user2314737 Punkte 23784

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
[ . . . ]

20voto

Sahith Vibudhi Punkte 4265

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.

18voto

William Entriken Punkte 33360

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.

13voto

Ratna Halder Punkte 1834

Lassen Sie Ihren Arbeitszweig development sein und Sie möchten zwischen dem lokalen Entwicklungszweig und dem Remote-Entwicklungszweig unterscheiden. In diesem Fall sollte die Syntax wie folgt lauten:

git diff remotes/origin/development..development

Oder

git fetch origin
git diff origin/development

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X