2015-04-23 3 views
1

У меня есть два репозитория GIT, один для работы и один для самостоятельной разработки. Моя компания проявила интерес к проекту, над которым я работала, и хотел бы, чтобы я переместил эту ветку (мастер) в новый филиал на своем репо (Features/Dynamo). I have created a migrator in the past, но это забивает репо, толкаемое, поскольку оно является прямым, а затем - зеркалом. Что мне нужно сделать, чтобы перевести ветку из одного репозитория в другой (при создании новой ветви процесса)?Клонирование ветки GIT в другие хранилища GIT branch?

+0

Есть ли общие файлы (одинаковые имена файлов/файлов)? –

+0

Можете ли вы просто добавить другое репо в качестве другого пульта и нажать на своего хозяина от A до функций/Dynamo на B? –

+0

И это будет одноразовый перевод? –

ответ

2

Другой подход заключается в том, чтобы добавить другой пульт.

git remote add ehime https://github.com/your_username/your_repo_name.git 

Теперь все вещи вы сделали, как

git push origin some_branch 

также может быть сделано как

git push ehime some_branch 

для другого пульта дистанционного управления.

Таким образом, два пульта дистанционного управления, но один каталог кода.

В случае общих файлов есть много вариантов при выполнении слияния, такого как

git checkout branchA 
git merge ours branchB 

или

git checkout branchA 
git merge -X theirs branchB 

для управления слияниями выполняются между два базой коды.

+0

Плюс один и принят, вы сэр удивительны – ehime

0

Простым подходом было бы получить клон двух репозиториев на одной машине, затем в «до» репо git checkout -b new_branch, а затем буквально cp файлы из другой директории проектов. git add и git commit, и все готово. Как я уже говорил выше, будет ли это работать, будет зависеть от того, есть ли у вас одинаковые имена файлов/файлов. Если вы это сделаете, вам будут представлены конфликты слияния, и два разных файла будут смешаны вместе довольно плохо.

0

В теории, это то, что вы могли бы сделать, но я думаю, вам будет лучше, если у вас есть два разных репозитория. ПРИМЕЧАНИЕ: Это не приведет к полной истории вашего git, оно просто добавит самое последнее состояние вашего проекта в качестве ветки.

$ git checkout -b OtherProject 

-- to prevent losing your git database 
$ mv .git/ /temp/gitBackup 

-- clear out all the stuff from the main repository 
$ rm -rf * 

-- copy contents of the tip of master from your other project 
-- but not the .git/ folder 
$ cp -r /path/to/personal/project/* . 
$ rm -rf .git/ 

-- bring back your old .git folder 
$ mv /temp/gitBackup ./.git 

-- add all your new files to this branch 
$ git add -A . 
$ git commit -am "The other project is now in this repo as a branch" 

Опять же, это не рекомендуемый курс действий. Ваша база данных git будет намного больше, и это не предназначено для филиалов. Я настоятельно рекомендую использовать один репозиторий для каждого проекта и, возможно, используя submodules для управления подпроектами из вашего репозитория git.