2016-11-14 3 views
1

У меня есть несколько репозиториев в репозиториях.
В repo3 Я хочу создать несколько ветвей. Когда я возвращаю репо, то есть в repo2 и делаю git branch, он показывает мне все ветви, присутствующие как в repo2, так и в repo3. Но я хочу, чтобы иметь возможность создавать филиалы, уникальные для их репозиториев, и эти ветви не должны появляться в repo2.Как создать уникальные ветки в репозиториях в репозиториях

Эта диаграмма показывает, как я хочу:

repo1/ repo2/ repo3 
      |  | 
      |  | 
      |  |_ _ _branchX, branchY, branchZ, branchK 
      | 
      | 
      branchA, branchB, branchC 
+1

Сколько фактических файлов '.git' у вас есть здесь? –

+0

есть .git файл только в repo1. – Deke

+0

Посмотрите на использование подмодулей Git. Это будет работать следующим образом: внутри 'repo2' будет ветвь, представляющая подмодуль' repo3'. Внутри 'repo3' вы увидите все его ветви. –

ответ

0

Это, как я, наконец: я в каждой репо git init. Затем я создал новые ветви, соответствующие этому репо. Когда я переместил репо назад и сделал git branch, он показал только ветви, присутствующие в этом текущем репо.

Да, но он также зарегистрировал gitlinkspecial entry in the index) для вложенного репо ... без регистрации вложенного репо удаленного URL.
Итак, когда repo2 будет совершать новые коммиты и нажимать их, repo1 зарегистрирует новый репо2 SHA1 (gitlink), но не знает, откуда этот SHA1 (удаленный URL репо).
Клонирование снова repo1 приведет к пустой repo2 (и не repo3)

Правильный путь для инициализации repo1 является наличие repo2 и repo3 инициализирован отдельно, то есть:

cd /path/to/repo2 
git submodule add -- /url/repo3 
git add . 
git commit -m "Add repo3 as submodule" 
git push 

cd /path/to/repo1 
git submodule add -- /url/repo2 
git add . 
git commit -m "Add repo2 as submodule" 
git push 

С этой установкой, git branch сделано в repo1, 2 или 3 будет показывать только ветви для текущего репо.

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