Ignoriere bestimmte Änderungen in Git Diff

2

Ist es möglich, einen Bericht von git diff oder verwandten Befehlen abzurufen, der eine bestimmte Änderungskategorie ausschließt?

Ich wurde gebeten, eine Änderung zu überprüfen, bei der eine große Anzahl von Dateien das Äquivalent von s / 2016/2017 / g durchlaufen hat. (Wir haben ein Drittanbieter-Gefäß aufgerüstet, und aus diesem Grund beziehen sich viele unserer Importe jetzt auf ein anderes Paket.)

Gibt es Optionen zum Anzeigen dieses Unterschieds in der Befehlszeile, aber zum Unterdrücken aller Änderungen, die nur aus den folgenden Elementen bestehen, damit ich mich auf logische Änderungen konzentrieren kann?

Ignorieren:

-import com.example.2016_2.util.Utility
+import com.example.2017_2.util.Utility

Behalten:

-Utility util = new Utility();
+Utility util = Utility.create();

Wenn die Antwort darin besteht, mein eigenes Skript zu schreiben und über git diff --porcelainoder durch Setzen zu integrieren GIT_EXTERNAL_DIFF, bin ich mit Sicherheit ein Spiel; Ich frage mich nur, ob

  1. dies wird von Haus aus unterstützt und irgendwie habe ich es in der Manpage verpasst;
  2. Es gibt andere git diff * -Befehle, die ich dafür verwenden kann.
  3. wenn schon eine passende diff ausführbare Datei existiert, die ich über zur Verfügung stellen kann GIT_EXTERNAL_DIFF
jsharp
quelle
--word-diffund --word-diff-regexkann helfen, indem nur Änderungen auf 2016/2017 hervorgehoben werden, ohne die vollständige Zeile als geändert anzuzeigen.
Patrick Mevzek

Antworten:

0

Es gibt viele Möglichkeiten, Dateien zu unterscheiden, git diffist in Ordnung, aber es gibt andere. Vor der gleichen Aufgabe würde ich:

  • Schauen Sie sich den Code mit den späteren Änderungen an
  • Kopieren Sie den gesamten Codebaum in ein anderes Verzeichnis
  • Machen Sie die Änderung von 2016/2017 in dieser Kopie rückgängig
  • Sehen Sie sich im Git-Baum das historische Commit an
  • einen rekursiven Vergleich zwischen den beiden Bäumen durchführen (BeyondCompare unter Windows, kdiff3unter Linux)
Magnet
quelle
Ich würde das gleiche tun, aber nur mit git: Erstellen Sie einen neuen, temporären Zweig basierend auf new, setzen Sie das Ersetzungs-Commit zurück und vergleichen Sie mit old. Auf diese Weise kann Git helfen, Verschiebungen / Umbenennungen zu erkennen UND Sie können Ihre IDE verwenden.
AH
"Kopieren Sie den gesamten git worktree
Codebaum