Я хорошо понимаю, как Git может поддерживать перемещения файлов: поскольку он использует хэш файла, "добавленный" файл легко обнаруживается как тот же, что и "удаленный".
Мой вопрос касается рефакторинга: учитывая Java, объявление пакета изменяется, поэтому содержимое файла НЕ будет одинаковым. В таком случае, как Git определяет, что "добавленный" файл обменивается историей с "удаленным"? Проверяет ли он "самый похожий контент", предполагая, что я сделал только незначительные изменения или подобное не детерминированное решение?