Den Unterschied zwischen zwei Repositories ermitteln
Lesezeit: 4 Minuten
sanjayav
Wie können wir den Unterschied zwischen zwei Git-Repositories ermitteln?
Das Szenario: Wir haben ein repo_a und ein repo_b. Letzteres wurde als Kopie von repo_a erstellt. Danach gab es in beiden Repositories eine parallele Entwicklung. Gibt es eine Möglichkeit, die Unterschiede der aktuellen Versionen dieser beiden Repositories aufzulisten?
mögliches Duplikat von Wie vergleiche ich zwei Git-Repositories?
– Ciro Santilli 新疆再教育营六四事件法轮功郝海东
30. August 2014 um 18:20 Uhr
Iamamac
In repo_a:
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master
git remote rm b
Was ist, wenn Sie repo_a/master mit einem bestimmten Tag von repo_b vergleichen müssen?
– David Torres
17. Oktober 2014 um 16:39 Uhr
funktioniert bei mir nicht, es wirft: fatal: mehrdeutiges Argument ‘remotes/b/master’: unbekannte Revision oder Pfad nicht im Arbeitsbaum. Verwenden Sie ‘–‘, um Pfade von Revisionen zu trennen, wie folgt: ‘git [<revision>…] — [<file>…]„Irgendwelche Ideen hier?
– Andrew Heekin
2. September 2015 um 3:09 Uhr
Mir geht es genauso wie @AndrewHeekin. Hat jemand eine Lösung?
– Parlament
6. November 2015 um 13:57 Uhr
Ich scheine angeben zu müssen origin/master eher als ein bloßes master. Außerdem findet dies den Unterschied zwischen den Master-Branches. Was also, wenn Sie alle unterschiedlichen Branches finden möchten? ZB um den Status einer Repository-Sicherung zu überprüfen?
– davidA
12. September 2016 um 22:42 Uhr
Können Sie erklären, was jede Zeile macht? Danke !
Verwenden Sie einfach die Verzeichnisse der beiden Git-Repos und Sie erhalten einen schönen grafischen Vergleich:
Wenn Sie auf eines der blauen Elemente klicken, können Sie sehen, was sich geändert hat.
Meld friert ein, während Projekte in meiner VS-Lösung verglichen werden, BeyondCompare nicht.
– Sascha Bond
20. Dezember 2016 um 15:29 Uhr
unter OSX: diff -rq Ordner1 Ordner2
– Kennzeichen
27. April 2017 um 0:50 Uhr
Wunderbarer Link! Sehr einfaches Programm, ich benutze es jetzt als mein Diff-Programm für OSX.
– dmanexe
12. März 2019 um 5:56 Uhr
Das ist absolut reizend! Danke für das Teilen.
– Schihab Khan
22. November 2019 um 3:46 Uhr
Das war die Lösung für mich. Sehr einfacher Git-Repository-Vergleich.
– Konstantinos Raptis
28. August 2020 um 11:54 Uhr
Sie können zuerst ein anderes Repo als Remote zu Ihrem aktuellen Repo hinzufügen:
git remote add other_name PATH_TO_OTHER_REPO
dann holen Sie Brach von dieser Fernbedienung:
git fetch other_name branch_name:branch_name
Dadurch wird dieser Zweig als neuer Zweig in Ihrem aktuellen Repo erstellt. Anschließend können Sie diesen Zweig mit einem Ihrer Zweige vergleichen, um beispielsweise den aktuellen Zweig mit dem neuen Zweig (Branch_Name) zu vergleichen:
git diff branch_name
Sobald Sie beide Branches in einem Repository haben, können Sie a git diff. Und es ist so einfach, sie in ein Repository zu bekommen
Das ist falsch. remotes/b ist ein Remote, aber kein Branch.
Damit es funktioniert, musste ich Folgendes tun:
git diff master remotes/b/master
Dies sollte wirklich ein Kommentar zu der entsprechenden Antwort sein.
– Verschränkte Schleifen
2. Juli 2020 um 18:37 Uhr
HerrE
Ich verwende PyCharm, das großartige Funktionen zum Vergleichen zwischen Ordnern und Dateien bietet.
Öffnen Sie einfach den übergeordneten Ordner für beide Repos und warten Sie, bis er indiziert wird. Dann können Sie mit der rechten Maustaste auf einen Ordner oder eine Datei klicken und Compare to... und wählen Sie den entsprechenden Ordner / die entsprechende Datei auf der anderen Seite aus.
Es zeigt nicht nur, welche Dateien unterschiedlich sind, sondern auch deren Inhalt. Viel einfacher als die Kommandozeile.
Dies sollte wirklich ein Kommentar zu der entsprechenden Antwort sein.
Kurz gesagt, Sie verwenden die Umgebungsvariable GIT_ALTERNATE_OBJECT_DIRECTORIES, um Zugriff auf die Objektdatenbank des anderen Repositorys zu haben, und verwenden git rev-parse mit --git-dir / GIT_DIR zum Konvertieren des symbolischen Namens in einem anderen Repository in eine SHA-1-Kennung.
Die moderne Version würde ungefähr so aussehen (vorausgesetzt, Sie befinden sich in ‘repo_a’):
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo_b/.git/objects \
git diff $(git --git-dir=../repo_b/.git rev-parse --verify HEAD) HEAD
wo ../repo_b/.git ist der Pfad zur Objektdatenbank in repo_b (es wäre repo_b.git, wenn es ein reines Repository wäre). Natürlich können Sie beliebige Versionen vergleichen, nicht nur HEADs.
Beachten Sie, dass es, wenn repo_a und repo_b dasselbe Repository sind, möglicherweise sinnvoller ist, beide in demselben Repository abzulegen, entweder mit “git remote add -f ...” um Spitznamen für das Repository für wiederholte Updates zu erstellen, oder obe off “git fetch ...“; wie in anderen Antworten beschrieben.
9237700cookie-checkDen Unterschied zwischen zwei Repositories ermittelnyes
mögliches Duplikat von Wie vergleiche ich zwei Git-Repositories?
– Ciro Santilli 新疆再教育营六四事件法轮功郝海东
30. August 2014 um 18:20 Uhr