Как перевести Git репо в основную ветку другого - PullRequest
1 голос
/ 29 января 2020

Я только что закончил разработку на моем шаблонизаторе, Squirrelly. Текущая версия хранится в репозитории GitHub на https://github.com/squirrellyjs/squirrelly, а новая версия на https://github.com/squirrellyjs/squirrelly-next.

Мой вопрос касается окончательной публикации на NPM. Первоначально я планировал опубликовать sh на squirrelly-next, а затем объединить позже, но я думаю, что решил просто опубликовать sh на squirrelly@8.0.0.

Однако проблема заключается в том, что все новая разработка находится в репо squirrelly-next, и мне нужно каким-то образом получить код и историю в репо squirrelly (с веткой для v7).

Я только что подумал переименовать https://github.com/squirrellyjs/squirrelly в https://github.com/squirrellyjs/squirrelly-v7 и https://github.com/squirrellyjs/squirrelly-next в https://github.com/squirrellyjs/squirrelly. Будут ли какие-либо потенциальные недостатки этого? Если так, как я могу получить репо Git из squirrelly-next в основную ветку squirrelly?

Ответы [ 2 ]

2 голосов
/ 29 января 2020

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

предположим, что в качестве источника задан один,

https://github.com/squirrellyjs/squirrelly

вы можете проверить это с помощью git remote -v, который дает вам список или удаленные репозитории.

вам нужно создать один fre sh хранилище, в которое вам нужно переместить код, который является

https://github.com/squirrellyjs/squirrelly-next

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

git remote add new-origin https://github.com/squirrellyjs/squirrelly-next

git fetch new-origin

вот и все,

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

, нам просто нужно проверить основную ветвь нашего старого происхождения

, если в новом репозитории нет веток

git push new-origin master

А если существует, то сначала вам нужно получить новую ветку репозитория в локальной

git checkout new-origin/master

ветке создания на локальном.

git checkout new-master

нам необходимо выполнить перебазирование, если new-master с master, прежде чем объединить master с new-master

git checkout master //which is from old repository.

git rebase new-master

разрешить конфликты, если таковые имеются

git checkout new-master
git merge master
git push new-origin/master

это будет иметь последний код, а также код из старого репозитория.

тогда вам нужно установить отслеживание для ветки в локальной сети,

git branch --set-upstream-to=new-origin/master

или вы можете удалить старый источник и переименовать new-origin to origin

git remote rm origin
git remote rename new-origin origin

если вы выполните второй шаг, вам не нужно изменять информацию отслеживания филиала.

0 голосов
/ 30 января 2020

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

Итак, я просто создал новая пустая ветвь с использованием { ссылка }.

Затем я добавил удаленный путь в мой новый репозиторий и слил мой новый репо с моей новой пустой веткой (осторожно: мне нужно было git add . и git commit сначала).

После этого я следовал этому руководству: https://multiplestates.wordpress.com/2015/02/05/rename-a-local-and-remote-branch-in-git/, чтобы переименовать мою старую основную ветку в v7, а затем переименовать мою новую пустую ветвь в master. (Мне пришлось изменить ветку по умолчанию на GitHub)

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