Diff zwischen zwei ganze Verzeichnisse/Projekte in hg oder git?
Habe ich geerbt ein Projekt, das ursprünglich gespeicherte in CVS mit allen Revisionen. Ich machte schon ein paar änderungen vorgenommen, und ich bin versucht zu vergleichen, alle die änderungen, die ich in die original directory, in Bezug auf neue Dateien Hinzugefügt, gegenüber dem alten.
Gibt es irgendeine Art von Dienstprogramm für hg/git, wo ich einen Baum diff, oder so etwas in der Art? Also, die sagen, es ist ein Zeichen zwischen neu hinzugefügten Dateien, gelöschte Dateien, bin ich zu viel verlangt?
- stackoverflow.com/a/12123669/1815624
git diff master..yourbranch path/to/folder
Du musst angemeldet sein, um einen Kommentar abzugeben.
git diff
macht genau das. aber es funktioniert nur für git-Projekte.hg diff
,svn diff
ziemlich jede version control system kann die diff-directory-Bäumegit diff
? Ich habe zwei separate git-Projekte, wie Vergleiche ich Sie nun? Ich bin noch relativ neu in VCSing.git diff HEAD^..HEAD
, die diffs Ihre neueste version, gegen die man, bevor esgitk
undgit gui
, gitk visualisiert Projekt-Geschichte, git-gui können Sie sich übergaben und sogit diff
kann vergleichen Sie beliebige Dateien/Verzeichnisse; möglicherweise müssen Sie Ihre--no-index
optionZu erstellen Sie einfach ein diff-patch in git-diff-format von zwei beliebigen Dateien oder Verzeichnisse, ohne jede Phantasie repository Zeug oder version control:
Jakub Narębski Kommentar knittl Antwort angedeutet die Antwort... der Einfachheit halber, das ist der vollständige Befehl.
Den
>>
Teil erstellt eine Datei und leitet den Ausgang zu. Wenn Sie nicht möchten, dass eine Datei und möchte nur die Ausgabe gedruckt in der Konsole, so dass Sie es kopieren können, entfernen Sie einfach die>> some_filename
Teil.Zum bequemen kopieren und einfügen, wenn Sie bereits
cd
ed zu einem Verzeichnis, welches das ursprüngliche Verzeichnis/Datei namensa
und das geänderte Verzeichnisb
es werden:git diff
Optionen, fügen Sie die Optionen, bevor Sie die Pfade. E. g.git diff --name-status --no-index some/path other/path
arbeitet mit der--name-status
option.Vom
git diff
- manpage:Wenn Sie wollen, vergleichen Sie zwei Versionen (z.B. zwei tagged-releases, oder zwei Verzweigungen) in zwei verschiedenen repositories verwenden, können Sie trick beschrieben in GitTips Seite auf Git-Wiki, unter "vergleichen von zwei lokalen repositories".
Vorausgesetzt, dass Sie innerhalb eines repository und die zweite repository ist in
/path/to/repo
, so seine GIT_DIR ist/path/to/repo/.git
wenn es sich um nicht-bare-repository, können Sie etwas wie das folgende:wobei A und B sind Revisionen, die Sie vergleichen möchten. Natürlich können Sie auch angeben, Pfad-limiter im obigen Ausdruck.
Erklärung:
GIT_ALTERNATE_OBJECT_REPOSITORIES
variable kann verwendet werden, um git-Befehle verketten Objekt-Datenbank der zwei Repositorys.git --git-dir=... rev-parse ...
Sie name (extended SHA-1-expression) im repository als parameter angegeben, umgit-dir
option in einzigartige, SHA-1 Kennung. Die$( ... )
Konstrukt stellt das Ergebnis von aufrufen von bestimmten Befehl in der Befehlszeile.git diff
vergleichen Sie zwei Revisionen (wo man von alternate object repository).Alternative Lösung wäre zu einfach import anderen repository in das angegebene repository, mit
git remote add
(undgit fetch
). Dann hättest du alles lokal, und in der Lage wäre zu tun Vergleich innerhalb einzelner repository.Ja. Wir können
git diff
aktuellen Verzeichnis gegen ein anderes Verzeichnis und......markieren Sie die hinzugefügte, gelöschte und geänderte Dateien:
...zeigt nur hinzugekommene Dateien:
... zeigt nur gelöschte Dateien:
...zeigen nur veränderte Dateien:
Siehe auch: https://git-scm.com/docs/git-diff
Es ist nicht git-spezifisch ist, aber als Allgemeine diff-utility für Windows, das ich wirklich gerne WinMerge.
Verstehe ich nicht wirklich, was Sie wollen, aber nicht
diff -ur
genug für Sie? Es wird funktionieren, sogar auf Verzeichnisse, ohne jegliche Art der Versionskontrolle.