Ignorieren Sie bestimmte Änderungen in git diff

734
jsharp

Ist es möglich, einen Bericht von git diff oder verwandten Befehlen zu erhalten, der eine bestimmte Kategorie von Änderungen 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-Glas aufgerüstet und viele unserer Importe beziehen sich jetzt auf ein anderes Paket.)

Gibt es Optionen, diesen Unterschied über die Befehlszeile anzuzeigen, aber alle Änderungen zu unterdrücken, die nur aus den folgenden Elementen bestehen, sodass ich mich auf alle Logikä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 Einstellungen zu integrieren GIT_EXTERNAL_DIFF, bin ich sicherlich ein Spiel. Frage mich nur, ob

  1. Dies wird aus der Box unterstützt und irgendwie habe ich es in der Manpage vermisst;
  2. es gibt andere git diff * -Befehle, die ich dafür verwenden kann;
  3. Wenn bereits eine entsprechende ausführbare Datei vorhanden ist, kann ich sie über GIT_EXTERNAL_DIFF
2
`--word-diff` und` --word-diff-regex` können helfen, indem Sie die Änderungen 2016/2016 hervorheben, ohne die gesamte Zeile als geändert anzuzeigen. Patrick Mevzek vor 5 Jahren 0

1 Antwort auf die Frage

0
xenoid

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

  • checken Sie den Code mit den späteren Änderungen aus
  • Kopieren Sie den gesamten Codebaum in ein anderes Verzeichnis
  • Stellen Sie die Änderung 2016/17 in dieser Kopie wieder her
  • Überprüfen Sie im Git-Baum das historische Commit
  • rekursiven Vergleich zwischen den beiden Bäumen durchführen (BeyondCompare unter Windows, kdiff3unter Linux)
Ich würde dasselbe tun, aber nur * using * git: Erstellen Sie einen neuen temporären Zweig auf der Basis von "new", setzen Sie das Ersetzungs-Commit zurück und vergleichen Sie es mit "old". Auf diese Weise kann git helfen, Verschiebungen / Umbenennungen zu erkennen UND Sie können Ihre IDE verwenden. A.H. vor 5 Jahren 0
"Kopieren Sie den gesamten Codebaum in ein anderes Verzeichnis", können Sie dazu die Funktion "git worktree" verwenden Patrick Mevzek vor 5 Jahren 0