2016-08-03 4 views
8

Был поиск броска SO для ответа на этот вопрос. Нашел этот старый поток, который, похоже, не дал никаких ответов. Повторяя эту тему, надеясь, что кто-то может это знать!Разница между веткой фильтра git и поддеревом git?

Может ли кто-нибудь сказать мне разницу b/w git поддерева и git filter-branch? я буду использовать тот же самый пример в оригинальном вопросе для этого:

git subtree split --prefix=some_subdir -b some_branch 

git filter-branch --subdirectory-filter some_subdir some_branch 

ответ

3

Да, git subtree (а вна оболочка) может быть использован для щелевой РЕПО, как описано в «Using Git subtrees for repository separation» по Stu Campbell.

Вы должны удалить код, который вы дублируется в разделенной папке, хотя:

git subtree split --prefix=path/to/code -b split 
git push ~/shared/ split:master 
git rm -r path/to/code 
git commit -am "Remove split code." 

Это отличается от git filter-branch (родной команды Git), который переписывает историю РЭПО подбирая только те коммиты, которые на самом деле влияют содержимое конкретного подкаталога.

Значение: не существует кода для git rm после того, как был запущен filter-branch.
git filter-branch не дублирует совершает как git subtree split делает: он удаляет («фильтрует») все, что не соответствует определенным критериям (здесь вложенный путь)

+0

Это является неточным в настоящее время, как мерзавец поддерево теперь является официальной часть мерзавца –

+0

Разница также означает, что если у вас есть несколько (n) подпапок, которые вы хотите сделать каждый из своих собственных репо, с помощью git filter-branch вам нужно сначала клонировать n раз, а поддерево вам нужно git rm n раз. – Qiulang

 Смежные вопросы

  • Нет связанных вопросов^_^