Во-первых, перепишите историю bee
, чтобы переместить все файлы в подкаталог:
cd /path/to/bee
git filter-branch -f --prune-empty --tree-filter '
dir="my fancy/target directory"
if [ ! -e "$dir" ]
then
mkdir -p "$dir"
git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files "$dir"
fi'
git log --stat
должен показать каждый файл, появляющийся в моем причудливом/целевом каталоге
. Теперь вы можете объединить историю в aye
с лёгкостью:
cd /path/to/aye
git remote add -f bee /path/to/bee
git checkout -b bee-master bee/master
git rebase master
git checkout master
git rebase bee-master
Пересоздайте подмодуль в aye
:
git submodule add git://my-submodule 'my fancy/target directory/my-submodule'
Наконец, вы можете очистить aye
:
git rm 'my fancy/target directory/.gitmodules'
git branch -D bee-master
git remote remove bee
Возможно, вам также придётся исправить абсолютные пути в вашем репозитории (например, в .gitignore
)