Я переименовал пару файлов, используя git mv
, использовал git stash
, быстро взглянул на HEAD (не меняя его), а затем сделал, git stash pop
чтобы вернуть все обратно. Мои ходы исчезли из списка коммитов, поэтому я переделал их, git rm
и в сообщении коммита утверждалось, что git обнаружил, что переименование было переименованием. Так что я больше не думал об этом.
Но теперь, после фиксации, я не могу получить доступ к истории перемещенных файлов! Вот что 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's alpha.
<<snip older commits>>
~/projects%
Так что на этот раз я не застрял полностью, но мне бы не хотелось, чтобы мне приходилось делать такие вещи все время. (Я ожидаю, что у меня будет изрядное количество файлов, которые будут перемещены хотя бы раз в жизни.)
Я делаю что-то неправильно? Старая копия файла и новая копия на 98,8% совпадают (изменены 2 строки из 166). Насколько я понимаю, git должен иметь возможность отслеживать файл в этом случае, потому что он подразумевает операции переименования, а не их явное сохранение, и файлы достаточно похожи, чтобы я считаю, что он должен считать их одинаковыми.
Что я могу сделать, чтобы это исправить?