Импорт одного git-репо как ветки в другое git-репо - PullRequest
15 голосов
/ 19 марта 2012

По историческим причинам у нас есть исходный код для разных версий в разных репозиториях git.Таким образом, хотя Project A содержит версию X исходного кода, Project B содержит версию Y исходного кода.

Знаете ли вы, как импортировать Project B как ветвь Project A?

Спасибо

Ответы [ 3 ]

26 голосов
/ 19 марта 2012

Я не уверен, что вы подразумеваете под "git project". В git состояния исходного кода описываются commitits (a.k.a. revisions). Они хранятся в репозиториях, но не зависят от них и могут свободно копироваться между репозиториями. Фактически, для работы с исходными кодами git всегда копирует коммиты в ваш локальный репозиторий, который находится в каталоге .git вашей рабочей копии. Ветви - это просто имена, указывающие на коммиты.

Таким образом, если у вас есть несколько веток в одном репозитории и другие ветви в другом репозитории, вы можете:

  1. Извлеките оба в ваш локальный рабочий репозиторий:

    git remote add B git://url.to/project.B.git
    git fetch B
    
  2. Основывайте свою работу на ветках от B

    git checkout -b newname remotes/B/branchname
    
  3. Переместите ветки, которые вы получили, из одного центрального хранилища в другое:

    git push origin remotes/B/branchname:branchname
    

    или наоборот

    git push B remotes/origin/master:othername
    

Вы можете пропустить префикс remotes/ большую часть времени.

18 голосов
/ 19 марта 2012

Это просто с Git. Вы должны добавить проект B как удаленный, а затем получить:

git remote add projectB git://url.to/projectB.git
git fetch projectB
1 голос
/ 22 сентября 2017
  1. Первый клон проекта A из git hub

git clone {URL-адрес проекта A git hub}

  1. Добавить путь к удаленному репозиторию проекта B

git remote add projectBrepo {URL-адрес проекта git hub}

  1. ветки проекта B будут извлечены

git fetch projectBrepo

  1. проверьте все ветки из проекта A и проекта B

git branch -v -a

  1. извлечение каждого имени ветки из проекта B (например: master, branch_name1)

git checkout -b master_old пульты / projectBrepo / master

  1. Нажмите основную ветвь из проекта B в проект A как master_old

git push origin master_old

  1. извлечение филиала имя_1 из проекта B

git checkout -b branch_name1 remotes / projectBrepo / branch_name1

  1. Переместите имя brnach_name1 из проекта B в проект A

git push origin_name1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...