Git Subtree. Почему я не могу переходить из поддерева, а не из корня?
Я изо всех сил пытаюсь понять смысл использования стратегии поддерева Git. Моя цель состояла в том, чтобы собрать несколько разрозненных репо в маленькое семейство репозиториев под зонтичным репо. Я использую стратегию поддерева, подробно описанную здесь: http://help.github.com/subtree-merge
Я пытаюсь убедить Git, что я хочу создать ветку из одного из этих поддеревьев, а НЕ из корня. Когда я перехожу в поддерево, создаю ветвь, а затем возвращаюсь к корню, запуск ветки git из корня ясно указывает на то, что ветка была создана в корне. Вздох.
Я люблю git/github, но сводить с ума это обычное задание, чтобы работать должным образом.
Может ли кто-нибудь, пожалуйста, просветить меня?
2 ответа
git работает только на "целом" уровне дерева, поэтому, где бы вы ни работали, вы работаете в дереве branch
, checkout <branch>
, commit
все работают на корневом уровне.
Стратегия слияния поддерева - это стратегия слияния, которая помогает, когда у вас есть хранилище, в котором одна ветвь перемещает поддерево файлов в другое место в хранилище, а другая сторона вносит изменения в эти файлы в исходных местоположениях. Он разработан, чтобы помочь объединить эти две операции таким образом, чтобы обычная стратегия слияния вызвала бы больше конфликтов или оставила файлы в неправильном месте.
Стратегия слияния поддеревьев не имеет отношения к тому, как работает git-операция "целое дерево", поэтому, если вы хотите создать ветку, которая является всего лишь одним поддеревом хранилища, вам нужно выполнить ветвление, а затем сделать новый коммит с удаленными другими поддеревьями. и дерево интереса переместилось на корневой уровень.
Однако, учитывая ваш шаблон использования, я бы порекомендовал вам долго читать субмодули. Это может обеспечить функциональность, которая соответствует тому, что вы пытаетесь достичь.
Я рекомендую git-поддерево apenwarr: http://github.com/apenwarr/git-subtree. Надеюсь, в какой-то момент он добавится к самому git.