Den Unterschied zwischen zwei Repositories ermitteln

Lesezeit: 4 Minuten

Den Unterschied zwischen zwei Repositories ermitteln
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

Den Unterschied zwischen zwei Repositories ermitteln
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 !

    – Enrique

    16. Juni 2019 um 15:21 Uhr

Verschmelzen kann Verzeichnisse vergleichen:

meld directory1 directory2

Verwenden Sie einfach die Verzeichnisse der beiden Git-Repos und Sie erhalten einen schönen grafischen Vergleich:

Geben Sie hier die Bildbeschreibung ein

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

git fetch /the/other/repo/.git refs/heads/*:refs/remotes/other/*

1646313488 132 Den Unterschied zwischen zwei Repositories ermitteln
James

git diff master remotes/b

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

1646313488 439 Den Unterschied zwischen zwei Repositories ermitteln
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.

    – Verschränkte Schleifen

    2. Juli 2020 um 18:37 Uhr

1646313489 601 Den Unterschied zwischen zwei Repositories ermitteln
Skala

Sehen http://git.or.cz/gitwiki/GitTipsAbschnitt „So vergleichen Sie zwei lokale Repositories“ in „Allgemein“.

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.

923770cookie-checkDen Unterschied zwischen zwei Repositories ermitteln

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy