Я хочу создать отдельное репо из уже существующей подпапки repo.
Отсоединить (переместить) подкаталог в отдельный репозиторий Git. НО, я не могу получить чистое репо с ним. В итоге у меня возникли две проблемы с новым репо:
- История кажется дублированной;
- Я не могу сохранить историю ветвей.
Вот что я сделал:
$ git clone ssh://.../repo.git
$ cd repo
$ git filter-branch --subdirectory-filter subdirectory HEAD -- --all
$ git reset --hard
$ git gc --aggressive
$ git prune
После этого кажется, что у меня есть оригинальная история репо и новая история. Я печатаю "git log - all --graph" (или gitk --all) Я вижу в качестве первого коммита начальное коммитирование первого репо. Затем график показывает исходную историю репо до последней фиксации. Затем у меня есть ВТОРАЯ история поверх первой, показывающая историю только вложенной папки, которую я хочу. Но в той части истории у меня есть только "хозяин" и никаких ветвей/слияний.
"git log", gitk или gitg все показывают только "сгладить" историю: они не показывают начальную историю репо до того, как вложенная папка сглаживает историю.
Я попытался использовать только команду "фильтр-ветвь", клонируя результирующий репо (с -no-hardlinks), используя:
$ git filter-branch --subdirectory-filter subdirectory -- --all
вместо:
$ git filter-branch --subdirectory-filter subdirectory HEAD -- --all
Но с тем же результатом.
Я делаю что-то неправильно или Git нарушается? У меня действительно нет идей... Используя Git 1.7.6. Спасибо.
EDIT: Я думаю, проблема может возникнуть из-за того, что комманды слияния игнорируются ветвью фильтра, что дает плоскую историю без ветвей или слияния...