2013-07-24 2 views
8

Я пытаюсь создать gitsubtree существующего репозитория, например:Как создать gitsubtree существующего репозитория?

-> Projecta/projectB

Проект А является родителем, я хочу, чтобы добавить проект В качестве мерзавца поддерева.

мерзавец поддерево -P projectB SSH: //[email protected]/projectB.git мастер

Но это не удается, и показывает следующее сообщение:

префикс «projectB ' уже существует.

Я не хочу снова загружать все репозитории, я просто хочу добавить этот каталог в свой gitsubtree.

Этот проект проекта B не отслеживается проектом A git.

заранее спасибо

+1

Есть ли папка projectB уже существует? Если он содержит что-нибудь? Поддерево Git откажется от создания поддерева, если каталог, в который он был помещен, содержит что-либо вообще. – LopSae

+0

Кажется невозможным в настоящее время (git v2.0), если папка projectB уже существует и удаляет существующий каталог projectB с помощью 'rm -rf projectB', тогда выполните' git subtree add projectB_directory [email protected]/projectB.git master', чтобы снова загрузить это единственный выбор. – Allen

ответ

4

Вы можете добавить projectB как поддерева Projecta с использованием ванили git (вам не нужно git subtree).

cd projectA 
git remote add projectB_remote [email protected]/projectB.git 
git fetch projectB_remote 
git checkout -b projectB_branch projectB_remote/master 
git checkout master 
git read-tree --prefix=projectB/ -u projectB 

Объяснение

  1. Введите локальный projectA репо.
  2. Добавить новый пульт с именем projectB_remote с адресом projectB.
  3. Fetch projectB_remote без слияния.
  4. Создание и оформление заказа projectB_branch; принесите файлы projectB_remote/master.
  5. projectA/master.
  6. Создайте поддеревье в projectA/master, которое содержит чек из projectB_branch.

Результирующих Структура каталогов

projectA 
    projectB 
    other.txt 
    project.txt 
    A.txt 
    files.txt 

См http://www.git-scm.com/book/en/v1/Git-Tools-Subtree-Merging

0

При добавлении поддерева, кажется, что префикс (подкаталог, в котором вы будете добавлять поддерево) уже не может существовать.

Я работал над этой проблемой, проверив фиксацию до того, как этот подкаталог существует, выполнив добавление поддерева git и затем слияние с веткой, содержащей мое старое содержимое подкаталога.

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