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