Чтобы переписать историю с перемещенными файлами:
Если вы хотите, чтобы история проекта выглядела так, как будто все файлы всегда находились в каталоге foo/bar
, то вам нужно сделать небольшую операцию. Используйте git filter-branch
с «древовидным фильтром», чтобы переписать коммиты так, чтобы в любом месте foo/bar
не существовало, оно создавалось и все файлы перемещались в него:
git filter-branch --prune-empty --tree-filter '
if [ ! -e foo/bar ]; then
mkdir -p foo/bar
git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files foo/bar
fi'
Теперь история будет записываться так, как если бы все файлы были всегда , расположенными в foo/bar
.
Чтобы просмотреть историю перемещенного файла:
Если вы просто хотите просмотреть историю файла, который был перемещен или переименован в какой-то момент в прошлом, просто используйте параметр --follow
для git log
:
git log --follow foo/bar/file.c