2 Stimmen

Unterschied zwischen den Diff-Ausgaben mit "git add --patch" und "filemerge"

Ich versuche, die git add --patch und ich habe festgestellt, dass die Diffs nicht die gleichen sind wie die, die mit opendiff .

  1. Ist das üblich? Gibt es verschiedene Diff-Algorithmen? Bin ich einfach nur verrückt?
  2. Angenommen, das oben genannte ist "ja", gibt es eine Möglichkeit, Git zu zwingen, den opendiff-Algorithmus zu verwenden?

2voto

Mark Longair Punkte 412179

Es gibt tatsächlich verschiedene Diff-Algorithmen. (Und es gibt viele mögliche Diffs, die zu genau der gleichen Änderung an einer Datei führen - das ist einer der Gründe, warum es so sinnvoll ist, dass Git keine Änderungen speichert, sondern nur den Zustand des Baums bei jedem Commit :))

Sogar innerhalb von Git können Sie bei einigen Befehlen zwischen zwei verschiedenen Diff-Algorithmen wählen - versuchen Sie zum Beispiel, eine Funktion in einem C-Code zu verschieben und vergleichen Sie die Ausgabe von:

git diff

... und:

git diff --patience

Letzteres ist in der Regel besser lesbar, wenn auch langsamer zu berechnen.

Ich bin nicht sicher, welchen Algorithmus opendiff verwendet, aber vielleicht ist er ähnlich wie Geduld diff ?

Leider glaube ich nicht, dass es derzeit in Git möglich ist, einen anderen Diff-Algorithmus in git add -p obwohl ich das auch sehr nützlich finden würde. Es gibt eine Patch-Serie hier um diese Funktion hinzuzufügen, aber es sieht so aus, als ob der Autor das noch nicht nachgeschickt hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X