Wie verfolgt Git den Verlauf während eines Refactorings?

Ich verstehe gut, wie Git das Verschieben von Dateien unterstützen kann: Da es Datei-Hash verwendet, wird eine "hinzugefügte" Datei leicht als dieselbe wie die "entfernte" erkannt.

ei meiner Frage geht es um Refactoring: In Anbetracht von Java ändert sich die Paketdeklaration, sodass der Dateiinhalt NICHT derselbe ist. Wie stellt Git in diesem Fall fest, dass die "hinzugefügte" Datei den Verlauf mit der "entfernten" Datei teilt? Prüft es, ob der Inhalt "am ähnlichsten" ist, vorausgesetzt, ich habe nur geringfügige Änderungen vorgenommen oder eine ähnliche nicht deterministische Lösung?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage