Клонировать ветку 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 и все готово. Как я спрашивал выше, будет ли это работать, зависит от того, есть ли у вас одинаковые каталоги / имена файлов. Если вы это сделаете, вы столкнетесь с конфликтами слияния, и два разных файла будут смешаны довольно плохо.