Я пытаюсь изучить новую команду git-subtree, которая была добавлена в Git 1.7.11. Кажется, я теряю способность переустанавливать после добавления поддерева. У меня есть первичный репозиторий с файлом README и репозиторием библиотеки, который также имеет файл README. Я добавляю его в каталог lib с помощью subtree add
:
$ git subtree add -P lib/mylib myliborigin master
Это отлично работает, но теперь история выглядит так:
* 22c1fe6 (HEAD, master) Merge commit 'b6e698d9f4985825efa06dfdd7bba8d2930cd40e' as 'lib/mylib' -
|\
| * b6e698d Squashed 'lib/mylib/' content from commit d7dbd3d
* b99d55b Add readme
* 020e372 Initial
Теперь, когда я хочу переустановить свое репо против origin/master
, и он терпит неудачу, потому что squash commit применяется непосредственно против его родительского коммита, который не применяется, поскольку он применяется к корню репо, а не к префиксу, который я дал это ему при добавлении поддерева.
Причина этого довольно ясна, если я смотрю на фиксацию сквоша. Информация о префиксе отсутствует. Это только оригинальная mylib совершает раздавленные вместе. Только следующее коммит слияния знает что-нибудь об этом, но rebase не учитывает его здесь.
Есть ли какие-либо обходные пути (кроме того, что никогда не перезагружается над поддеревом)?