Клонировать ветку GIT в другую ветку GIT?

У меня есть два репозитория GIT, один для работы и один для самостоятельной разработки. Моя компания выразила заинтересованность в проекте, над которым я работаю, и хотела бы, чтобы я перенес эту ветку (master) в новую ветвь своего репо (Features/Dynamo). Я создал мигратора в прошлом, но это приводит к тому, что репо подталкивается, поскольку это прямое - голое тогда - зеркальное отражение. Что мне нужно сделать, чтобы перенести ветку из одного хранилища в другое (при создании новой ветки в процессе)?

3 ответа

Решение

Другой подход - добавить другой пульт.

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

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

Теоретически, это то, что вы могли бы сделать, но я думаю, что вам лучше обслужить два разных хранилища. ПРИМЕЧАНИЕ: это не перенесет всю вашу историю 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 будет расти намного больше, и это не предназначено для использования в ветвях. Я настоятельно рекомендую использовать один репозиторий для каждого проекта и, возможно, использовать субмодули для управления подпроектами из вашего репозитория git.

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

Другие вопросы по тегам