Как я могу получить git журнал, чтобы показать мне всю историю файла, когда даже git log -M --follow --full-history new/directory/file
не удалось.
Но сначала немного контекста об изменениях, которые не отображаются ...
Мы импортировали репозиторий git в другой, мы поступили так:
git clone git@domain.com:namespace/NewRepository
cd NewRepository
git remote add oldRepository git@domain.com:oldNamespace/oldRepository.git
git fetch oldRepository
git checkout -b old-master oldRepository/master
mkdir -p new/directory/
git mv -k * new/directory/
find . -name ".*" -d 1 -exec git mv -k {} new/directory/ \;
git commit -m "Move oldRepository to its new location"
git push --set-upstream origin old-master
git checkout master
git pull
git merge old-master --allow-unrelated-histories
git push
Пока все хорошо, после этого git log --follow new/directory/file
предоставит мне полный журнал изменений файла.
Примерно через неделю некоторые новые изменения в старом репозитории нужно было «перенести» в новый. Мы поступили так:
git fetch --all
git checkout old-master;
git merge origin/old-master; # I got no conflict (No change actually)
git merge origin/master; # I got no conflict (As expected)
git merge -s subtree -X patience oldRepository/master;
# I am not sure "-X patience" is a thing but that's what we ran.
# But the "-s subtree" is the important part I believe, we got no conflict and all expected changes were found in their new location (Even newly created files)
git push --set-upstream origin old-master
Затем я создал PR, а затем в конечном итоге слил его, используя параметр create a merge commit .
Теперь, если я это сделаю git log --follow new/directory/file
последняя фиксация, которую я вижу: Move old repository to its new location
, но я не получаю более новой записи из старого репозитория, которая была сделана после исходного импорта. Несмотря на наличие изменений в файле.
Однако:
- A
git blame new/directory/file
показывает мне рядом с измененной строкой правильную информацию - A
git log
(Без указанного файла) показывает фиксацию - A
show history
в моей IDE показывает мне запись журнала.
Поскольку моя IDE делает это, я предполагаю есть комбинация флагов для журнала git, чтобы показать мне правильную историю, но я пробовал МНОГО комбинации и не мог понять. И да, я прочитал справочную страницу ...
Кроме того, если бы другая процедура могла помешать мне попасть в эту ситуацию, я хотел бы знать ... Доу, оглядываясь назад, возможно, old- master ветка была ненужной, но изначально казалось хорошей идеей иметь ветку для разрешения конфликта.
Спасибо!