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