Есть удалённый репозиторий основного проекта, в котором в каталоге cite лежит содержимое другого подпроекта.
Реализована данная схема была согласно этому руководству.
Добавил удалённый сервер подпроекта:
git remote add cite_serv user@server:/opt/git/cite
git fetch cite_serv
git checkout -b cite_project cite_serv/master
git checkout master
git read-tree --prefix=cite/ -u cite_project
В итоге (практически цитата): после того как вы сделаете коммит, все файлы проекта сite_project будут находиться подкаталоге cite — будто вы скопировали их туда из архива.
Плюсом подхода является то, что можно лего последние изменения подпроекта вытягивать в соответствующую ветку и потом её объединять через
git merge --squash -s subtree --no-commit cite_project
Теперь сложности: Прихожу домой, клонирую основной проект.
git clone user@server:/opt/git/letter
При повторении предыдущей последовательности команда
git read-tree --prefix=cite/ -u cite_project
error: Entry 'cite/LibraryDB.bib' overlaps with 'cite/LibraryDB.bib'. Cannot bind.
Вопрос такой: можно ли как-то ветку подпроекта (cite_project), которая создалась после git checkout -b cite_project cite_serv/master объединить с уже существующей папкой cite в основном проекте? И чтобы она смотрела на cite_serv/master?
Сейчас использую такой костыль:
Удаляю в клонированном проекте папку cite
git rm -r cite/
git read-tree --prefix=cite/ -u cite_project
При таком подходе теряются изменения, которые были внесены в cite в основном проекте, но ещё не были отправлены в репозиторий подпроекта.