Это следствие фундаментального проектного решения в git
. Git коммиты не представляют различия .Git commit представляет состояние моментального снимка вашего репо (то есть он не отслеживает переименования, перемещения файлов, разбиения файлов, объединения файлов и т. Д.).
Для того, чтобы точно «отслеживать» изменения при их перемещении между файлами, которые выНужно использовать другой алгоритм дифференцирования коммитов, который зависит от вашей цепочки инструментов git.К сожалению, большинство инструментов, доступных сегодня, отстой.
Общепринято, что лучше всего смотреть на коммит непосредственно перед коммитом, который добавил a.txt
(или такой же коммит, если abcd.txt
удаление произошло в том же коммите), чтобы увидеть, откуда исходит содержимое файлов.
Одна из стратегий - написать пояснительную заметку в расширенном комментарии коммита, чтобы пользователи могли видеть, что произошло, например, git -m "Splitting up abcd.txt to a.txt, b.txt, c.txt, d.txt"
.Я также рекомендую избегать смешивания операций переименования, разделения и объединения файлов с другими изменениями:
- Сделать коммит с
abcd.txt
, как это было. - Разделить
abcd.txt
на отдельные файлы (a.txt
, b.txt
и т. Д.) В том же каталоге без внесения каких-либо других изменений. - Commit
- Перемещение отдельных файлов в их окончательные каталоги
- Этоизбегайте смешивания разделения файла с последующей операцией перемещения файла в одном и том же коммите
- Commit
- Это позволяет избежать смешивания перемещения файла с последующей операцией редактирования файла втот же коммит
- Редактировать
a.txt
, b.txt
и т. д. как обычно. - Фиксация