Помните одно: Git отслеживает только содержимое файла.
Из раздела « Перемещение файлов » в Pro Git book v2:
В отличие от многих других систем VCS, Git явно не отслеживает перемещение файлов. Если вы переименуете файл в Git, в Git не будет сохранено никаких метаданных, сообщающих, что вы переименовали файл. Тем не менее, Git довольно умен, чтобы выяснить это после факта
И перемещение и переименование - это то же самое в Git.
Итак, Git обнаруживает, что перемещение / переименование автоматически работает только при условии, что эти файлы не изменены.
Git делает эти вещи только при перемещении / переименовании файла:
- Отслеживаемый файл удаляется, git получает SHA-1 содержимого этого файла, предположим, что значение равно
abc
.
- Добавлен файл без отслеживания, git вычисляет SHA-1 содержимого этого файла, предположим, что значение также равно
abc
.
- Если вы сделаете коммит в этот момент, git обнаружит, что они имеют одинаковое значение SHA-1, а затем обработает их как переименование.
Предположим, вы изменили некоторые отслеживаемые файлы, а также переместили их в другую папку. Тогда, к сожалению, git не может обнаружить их как переименовывать / перемещать автоматически при коммите.
Если вы действительно хотите, чтобы git отслеживал переименование / перемещение автоматически, вам нужно сделать:
Убедитесь, что вы НЕ изменяете файл (ы) и переименовываете / перемещаете файл (ы) только в одном коммите.
Если вы хотите изменить файл и переместить файл одновременно и хотите, чтобы git определял их как переименование / перемещение с помощью TortoiseGit, то в вашем случае:
- Щелкните правой кнопкой мыши по этому файлу и выберите
TortoiseGit -> Rename...
в контекстном меню.
- префикс
new_folder\
к имени файла, смотрите:
- совершить
Примечание: вам нужно переименовывать файлы один за другим. Предположим, много работы. Так что лучше переименовывать только файлы.
Примечание 2: Если вы много изменяете файл, git не может понять, что это переименование / перемещение.