2013-08-30 2 views
17

В репозитории A папка sub включена в качестве поддерева git репозитория S - указывает на master филиал.git поддерева: можно изменить ветку/путь поддерева в разветвленном репозитории?

У меня есть forked хранилище A в F. Теперь я хочу, чтобы выполнить одно из следующих действий в F:

  • изменения sub использовать другую ветвь S (т.е. develop ветви)
  • или: изменение sub использовать другое хранилище вообще

Является ли это одним из возможных, и если да, то каким образом? Будут ли какие-либо побочные эффекты, о которых я должен знать?

И как я могу убедиться, что изменение моего поддерева не будет обновляться в репозитории A, когда я объединю свои изменения (запрос на pull)? Я имею в виду, кроме выделения коммитов.

ответ

28

Если вы использовали git subtree (а не git submodule), чтобы создать поддерево, то это просто нормальный реж. Чтобы переключить его на другую ветвь, просто удалите ее и заново создайте поддерево из новой ветви. Это:

git rm <subtree> 
git commit 
git subtree add --prefix=<subtree> <repository_url> <branch> 

Это должно работать без проблем.

+0

и что не будет синхронизировано вверх по течению? Наверное, я попробую. – LearnCocos2D

+0

Он не будет синхронизироваться вверх по течению. '' не сохраняется нигде; он просто используется для команды, чтобы узнать, откуда взять файлы. После этого вы получаете нормальный subdir в своем репозитории. – elmart

+0

А я понял, что теперь ... поддерево просто «копирует» состояние фиксации другого репозитория, как если бы я скопировал его вручную (но сохранил историю фиксации, а что нет). Таким образом, это не меняет мою первоначальную проблему не синхронизации конкретной папки между двумя репозиториями, но достаточно отвечает на этот вопрос. – LearnCocos2D

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