Ich möchte die Unterschiede zwischen einer Datei, die ich in meinem lokalen Repo habe, und der Datei in der Datei herausfinden origin master
.
Ich weiß, dass es das gibt git diff
, aber ich möchte es nur auf diese eine bestimmte Datei beschränken.
Nehmen wir zur Vereinfachung an, die Datei file1.txt
hat einen Namen und einen lokalen Dateipfad = [local_path]
und im Ursprung den Dateipfad = [remote-path]
.
Was wäre der git-Befehl, den ich eingeben muss?
EDIT: Vielen Dank für Ihre Eingabe, es war sehr aufschlussreich. Für diejenigen, die Eclipse verwenden (was ich bin und ich hätte es früher sagen sollen), habe ich gerade herausgefunden, dass Sie einfach mit der rechten Maustaste klicken -> Vergleichen mit -> Verzweigen, Tag oder Referenz -> geeignete Version auswählen und los geht's.
Antworten:
Wenn
[remote-path]
und gleich[local-path]
sind, können Sie tunHinweis 1: Der obige zweite Befehl wird mit dem lokal gespeicherten Fernverfolgungszweig verglichen. Der Befehl fetch ist erforderlich, um den Remote-Tracking-Zweig so zu aktualisieren, dass er mit dem Inhalt des Remote-Servers synchronisiert ist. Alternativ können Sie einfach tun
Hinweis 2:
master
Kann in den obigen Beispielen durch einen beliebigen Zweigstellennamen ersetzt werdenquelle
git diff master:README.md -- README.md
git diff origin/master -- README.md
git fetch master
stattdessen verwendengit fetch .
(Origin / Master funktionierte auch nicht), aber der Rest funktionierte gut.git fetch **origin**
.So zeigen Sie die Unterschiede zwischen der Remote-Datei und der lokalen Datei an:
So zeigen Sie die Unterschiede in die andere Richtung an:
Grundsätzlich können Sie mit dieser Notation zwei beliebige Dateien überall unterscheiden:
Wie üblich
ref1
undref2
können Zweigstellennamen, Remotename / Zweigstellenname, Commit-SHAs usw. sein.quelle
Verwenden Sie einfach die folgende Syntax, um das lokale Repository mit dem Remote-Repository zu vergleichen:
quelle
Dafür habe ich ein Bash-Skript geschrieben:
Im obigen Skript rufe ich den Remote-Hauptzweig (nicht unbedingt den Hauptzweig ANY-Zweig) ab
FETCH_HEAD
, erstelle dann eine Liste nur meiner geänderten Datei und vergleiche geänderte Dateien mitgit difftool
.Es gibt viele
difftool
von Git unterstützte, die ichMeld Diff Viewer
für einen guten GUI-Vergleich konfiguriert habe .Aus dem obigen Skript habe ich Vorkenntnisse darüber, welche Änderungen von anderen Teams in derselben Datei vorgenommen wurden, bevor ich Git-Phasen befolge,
untrack-->staged-->commit
die mir helfen, unnötige Konflikte beim Zusammenführen von Konflikten mit dem Remote-Team zu vermeiden oder einen neuen lokalen Zweig zu erstellen und den Hauptzweig zu vergleichen und zusammenzuführen.quelle
Ich habe ein paar Lösungen ausprobiert, aber ich habe eine einfache Möglichkeit: Sie befinden sich im lokalen Ordner:
Dann haben Sie die letzte Commit-Nummer von local git und remote git verglichen ....
quelle
Die vollständige Antwort auf die ursprüngliche Frage, die sich auf einen möglichen anderen Pfad auf lokaler und entfernter Ebene bezog, finden Sie unten
git fetch origin
git diff master -- [local-path] origin/master -- [remote-path]
Angenommen, der lokale Pfad lautet docs / file1.txt und der Remote-Pfad lautet docs2 / file1.txt
git diff master -- docs/file1.txt origin/master -- docs2/file1.txt
Dies wird von der GitHub-Hilfeseite hier und der Antwort von Code-Apprentice oben angepasst
quelle