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