Я переименовал пару файлов с помощью git mv
, использовал git stash
, быстро просмотрел HEAD (не меняя его), затем сделал git stash pop
, чтобы вернуть всю партию снова. Мои ходы исчезли из списка фиксации, поэтому я переписал их с помощью git rm
, а заявленное сообщение фиксации git заметило, что переименование было переименованием. Поэтому я больше не думал об этом.
Но теперь, post-commit, я не могу попасть в историю перемещенных файлов! Здесь git говорит об рассматриваемом коммите:
~/projects% git log --summary
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.h
delete mode 100644 test/R_DebugUI_iOS.m
create mode 100644 system/runtime/src/R_DebugUI_iOS.h
create mode 100644 system/runtime/src/R_DebugUI_iOS.m
<<snip older commits>>
~/projects%
Теперь я пытаюсь получить историю одного из этих перемещенных файлов, поэтому я могу посмотреть на старую версию, но я не получаю ничего полезного:
~/projects/system/runtime/src% git log --follow --find-copies-harder -M -C R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
~/projects/system/runtime/src%
(Я также пробовал его без -M
, -C
и --find-copies-harder
, но безрезультатно.)
Я могу получить его историю под своим старым именем, которое останавливается в том месте, где оно было удалено из старого местоположения:
~/projects% git log --summary --follow --find-copies-harder -M -C -- test/R_DebugUI_iOS.m
commit de6e9fa2179ae17ec35a5c368d246f19da27f93a
Author: brone
Date: Wed Dec 8 22:37:54 2010 +0000
Moved R_DebugUI into runtime
delete mode 100644 test/R_DebugUI_iOS.m
commit 32a22d53c27e260714f759ecb3d3864e38b2e87f
Author: brone
Date: Tue Dec 7 23:52:51 2010 +0000
Can set debug UI alpha.
<<snip older commits>>
~/projects%
Таким образом, я не полностью застрял на этот раз, но мне не хотелось бы делать это все время. (Я ожидаю, что у вас будет достаточно количество файлов, которые будут двигаться хотя бы один раз в жизни.)
Я что-то делаю неправильно? Старая копия файла и новая копия на 98.8% одинаковы (2 строки из 166 изменены). Я понимаю, что git должен иметь возможность отслеживать файл в этом случае, потому что он выполняет операции переименования, а не сохраняет их явно, и файлы достаточно похожи, и я считаю, что они должны считать их одинаковыми.
Есть ли что-нибудь, что я могу сделать, чтобы исправить это?