Warum scheint die Git-Community Side-by-Side-Unterschiede zu ignorieren [closed]


33

Früher habe ich Windows, SVN, Tortoise SVN und Beyond Compare verwendet. Es war eine großartige Kombination für Code-Reviews.

Jetzt benutze ich OSX und Git. Ich habe es geschafft, zusammen mit Gitx und DiffMerge ein Bash-Skript zu erstellen, um eine kaum akzeptable Lösung zu finden.

Ich bin seit über einem Jahr mit diesem und ähnlichen Setup durcheinander. Ich habe auch versucht, den Github Diff Viewer und den Gitx Diff Viewer zu verwenden. Es ist also nicht so, als hätte ich ihnen keine Chance gegeben.

Es gibt so viele kluge Leute, die großartige Sachen mit Git machen. Warum nicht das Side-by-Side-Diff mit der Option, die gesamte Datei anzuzeigen? Bei Leuten, die beide verwendet haben, habe ich noch nie von jemandem gehört, der die einzelne +/- Ansicht besser mag, zumindest für mehr als eine schnelle Überprüfung.


Sie können TortoiseGit so einrichten, dass Beyond Compare für Diiffs verwendet wird. In diesem Fall wird die gesamte Datei nebeneinander angezeigt.
Wildpeaks

1
Nur ein Kommentar, ich benutze das Windows, SVN und Beyond Compare. Aber jetzt benutze ich Ubuntu + Git. Zum Glück kann ich immer noch meinen alten Freund Beyond Compare verwenden. Es funktioniert gut auf Ubuntu. Und obwohl es nicht kostenlos ist, ist es mir jeden Cent wert. :) Entschuldigung, ich kann Ihnen keine Lösung für OSX anbieten, wollte aber nicht, dass die Leute glauben, Beyond Compare sei eine reine Windows-Lösung.
David S

7 Jahre später fühle ich mich immer noch ein bisschen so, aber ich habe mich darauf vorbereitet, das Inline-Diff in allen außer den komplexesten Fällen zu bevorzugen. Dann breche ich meinen alten Freund Beyond Compare aus.
Kyle Heironimus

Antworten:


19

Ich kann hier nicht für Linus sprechen, aber die Art und Weise, wie Git mit Diffe Tools umgeht, ist philosophisch gesehen sehr unixisch. git macht das, was es tut, sehr gut und verwendet externe Tools für alles andere, einschließlich differenzierteres Vergleichen und Zusammenführen.

Ich benutze DiffMerge mit git auch unter OS X und musste nicht auf Bash-Shells zurückgreifen. Es war schwierig, aber ich habe die difftool- und mergetool-Einstellungen von git so konfiguriert, dass DiffMerge direkt aufgerufen wird. Jetzt kann ich Diffs anzeigen und Zusammenführungskonflikte in einem hervorragenden visuellen Drittanbieter-Tool lösen.

Hier ist meine Konfiguration:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge

1
Das ist in Ordnung, aber wenn sich mehrere Dateien ändern, kann ich sie nacheinander ansehen, in der Reihenfolge, in der git beschließt, sie mir anzuzeigen. Ich muss eines schließen, um ein anderes zu öffnen. Deshalb verwende ich auch Bash-Skripte, wenn ich alle Dateien auf einmal betrachten möchte.
Kyle Heironimus

Ich weiß nicht, was Sie erwarten würden, wenn Sie "alle auf einmal betrachten". Aber check out git diff --stat. Bietet Ihnen eine schöne grafische Auflistung aller geänderten Dateien mit der Anzahl der geänderten Zeilen.
Dan Ray

Wenn Sie ein bisschen mehr über diese Sache nachdenken, "öffnen Sie sie alle auf einmal" ... Wie viele Dateien können Sie gleichzeitig bearbeiten / anzeigen? Ich kann zu einem bestimmten Zeitpunkt nur eine Datei ansehen. Ich verstehe einfach nicht, was du dir wünschst.
Dan Ray

2
Das beste Beispiel ist TortoiseSVN mit Beyond Compare. Wenn sich zum Beispiel beim letzten Commit meines Mitarbeiters 3 Dateien geändert haben, werden die drei Dateien in einer Liste angezeigt. Ich kann dann auf die entsprechende Datei klicken, um die Unterschiede zu sehen. Ich könnte auch 3 separate Fenster öffnen, jedes mit einer anderen Datei. Ich kann dann zwischen ihnen hin und her gehen, um die Änderung zu untersuchen. Grundsätzlich können Sie alle Änderungen zu Ihren eigenen Bedingungen anzeigen, nicht in der Reihenfolge, die von Ihrem VCS vorgegeben wird.
Kyle Heironimus

1
Du solltest dir Tower ansehen. Es ist die beste Mac-Git-GUI, die ich je gesehen habe, und macht das, wovon du sprichst, und WEITER. git-tower.com
Dan Ray

16

Sie werden feststellen, dass SVN selbst auch keine Side-by-Side-Lösung bietet. Was Sie aufgelistet haben, sind Tools von Drittanbietern. Wie bei den meisten Dingen in Git ist dies außerordentlich konfigurierbar und bietet sofort eine hervorragende Werkzeugunterstützung. Hast du ein Mergetool eingerichtet? Wenn nicht, solltest du. Wenn ja, versuchen Sie es git difftool. Dann werfen Sie einen Blick auf die Manpage für Konfigurationsoptionen.

Ich verwende KDiff3 als mein Mergetool, da es ein nettes, plattformübergreifendes Tool ist und ohne weitere Konfiguration git difftoolgenau das tut, was Sie verlangen.


2
Eigentlich ist es mit difftool in Ordnung, aber es schlägt immer noch fehl, wenn man sich viele Dateien ansieht. Sie müssen einzeln geöffnet werden. Um sie alle auf einmal zu öffnen, muss ich Bash-Script-Hackery betreiben.
Kyle Heironimus

9

Das ist die * nix-Philosophie. Viele Leute, die diese Tools verwenden, verbringen viel Zeit im Terminal. Das Terminal erfordert nicht, dass wir unsere Hände von der Tastatur zur Maus bewegen. Ich weiß, dass ich den +/- Stil gegenüber den visuellen Vergleichen / Zusammenführen-Werkzeugen bevorzuge, hauptsächlich, weil mir nur die Unterschiede wichtig sind. Ich interessiere mich für die 3-4 Zeilen um die Änderung und die Änderung selbst. Alles andere sind zusätzliche Informationen, die mir wirklich nicht helfen.

Diffs werden häufig verwendet, um einen schnellen Überblick über die Änderungen zu erhalten. Den Code nicht zu lesen.

Ich habe die visuellen Diff-Tools im Vergleich zum Standard-Diff auf GNU-Systemen noch nie als sehr nützlich empfunden. Alles, was sie mich jemals dazu bringen, ist, mit der Maus herumzuspielen und mich zu zwingen, durch die Datei zu scrollen, ihre Benutzeroberfläche herauszufinden und dann wieder in die Befehlszeile zu gelangen, wo ich etwas gegen ein Problem tun kann, das ich im Diff sehe .


1
vimdiff ist okay, es zeigt dir normalerweise nur die Teile. Ich benutze es für Zusammenführungen; keine maus nötig
Alternative

8
Sehen Sie sich jemals Änderungen an, die von einem Mitarbeiter vorgenommen wurden? Zu Bereichen des Codes, mit denen Sie nicht so vertraut sind? Ich mache das die ganze Zeit, und ich kann mir nicht vorstellen, es ohne den ganzen Code nebeneinander zu machen. Für mich ist das +/- großartig für Änderungen, die von be vorgenommen wurden, aber nicht für andere. Ich sage nicht, dass du falsch oder schlecht bist oder so. Nur Fragen.
Kyle Heironimus

1
Ich hüpfe oft in Code, der von Kollegen geändert wurde, oft in Bereichen, mit denen ich nicht vertraut bin. Ich glaube, ich habe es vielleicht drei- oder viermal nebeneinander benutzt und hätte es auch ohne weiteres tun können. Es kommt nur darauf an, was Ihre bevorzugte Arbeitsweise ist. Es funktioniert für Sie, ich finde es unnötig.
Brian Knoblauch

0

Aus meiner persönlichen Sicht ist die Antwort meistens, dass Unterschiede so kurz sind, dass es keine Rolle spielt.

Für Codeüberprüfungen verwende ich ein umfassendes Tool zur Codeüberprüfung, mit dem ich alle gewünschten Informationen wie Kommentare, Hervorhebungen der Syntax und die Ansicht nebeneinander abrufen kann.

Ich verwende git difffast ausschließlich beim Staging von Code zum Festschreiben. Wenn das der Fall ist, sind die Unterschiede klein genug und aktuell genug, dass ich den Kontext nicht sehen muss, um mich daran zu erinnern, was los ist.

Mein Code-Review-Tool der Wahl Phabricator oder möglicherweise IDE-integrierte Tools, die sprachkontextabhängig sind. Ich denke, der Pull-Request-Flow von Github ist für die Codeüberprüfung schrecklich, hauptsächlich, weil er Unified Diff und nicht Side-by-Side zeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.