Github: добавление новой ветки разработки в мой форк - PullRequest
5 голосов
/ 02 ноября 2011

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

Вот картинка: я разветвлял ветку 'development' из проекта в свое собственное репозиторий github, клонировал в локальный, создал функцию git-flow, сделал вещи и опубликовал. Все хорошо.

В то же время исходный проект изменился на новую ветвь разработки (назовите ее «velop2 »), поэтому мою опубликованную функцию нельзя было перенести в основной проект.

Итак - по совету - я создал локальную ветку 'Develop2', удалил мою локальную ветку 'Develop', вытащил 'Develop2' из основного репозитория проекта, а затем слил это с моей локальной функцией. Все в порядке, кроме ... В моем личном репозитории github все еще есть старая ветка 'Develop' и функция, основанная на этой ветке.

Итак, мой вопрос: что мне теперь делать? Пара вариантов, которые я рассмотрел:

  1. Полностью удалите мой форк 'Develop' на GitHub, раскошелите 'Develop2' из основного проекта, затем перетащите его в мой локальный репозиторий и объедините, затем снова опубликуйте мою функцию и выполните запрос на извлечение. (Неопределенность, хотя: нужно ли мне клонировать, а не тянуть новую вилку, чтобы она имела правильное происхождение ..)
  2. Удалите ветвь «Develop» в источнике и компоненте, добавьте новую ветвь Develop2 и т. Д.
  3. Принудительно подтолкнуть мою ветку'velop2 'в origin origin, затем переименуйте ее и сделайте то же самое с функцией ..

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

1 Ответ

3 голосов
/ 02 ноября 2011

Вам абсолютно не нужно переделывать вещи - Git хорошо экипирован для решения подобных проблем.

Во-первых, форки на GitHub - это весь репозиторий, поэтому удаление вашего "развернутого" ветвления на самом деле ничего не значит - вам просто нужно внести изменения develop2 вверх по течению в свой форк. Я предложил добавить пульт с именем upstream, чтобы легко получать изменения из хранилища, из которого я разветвлялся.

Теперь, если вы добавили upstream, git fetch должен сбросить upstream/develop2 в ваш локальный репозиторий. Я бы отменил ваше слияние (вероятно, git reset --hard develop~), создал бы ветвь develop2 для согласованности, а затем перебазировал бы ваши локальные develop2 изменения в upstream/develop2: git rebase --onto upstream/develop2 upstream/develop develop.

До:

              X---Y---Z upstream/develop2
             /
            |           H---I---J  develop, develop2
            |          /
            | E---F---G  upstream/develop
            |/
A---B---C---D

После того, как:

                        H'--I'--J' develop2
                       /
              X---Y---Z upstream/develop2
             /
            |           H---I---J  develop
            |          /
            | E---F---G  upstream/develop
            |/
A---B---C---D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...