Почему в журнале git не отображается история перемещенного файла и что я могу с этим сделать?

Я переименовал пару файлов, используя 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 и - найти-копии-сложнее , но безуспешно.)

Я могу получить его историю под его старым именем, которое заканчивается в том месте, где он был удален из своего старого местоположения:

~/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 должен иметь возможность отслеживать файл в этом случае, потому что он предполагает операции переименования, а не их явное сохранение, а файлы достаточно похожи, и я считаю, что он должен считать их одинаковыми.

Есть ли что-нибудь, что я что можно сделать, чтобы это исправить?

84
задан 9 December 2010 в 16:35
поделиться