Как мне изменить, с какого проекта GitHub я разветвлялся?

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

То есть:

Original -> MyFork

Сейчас:

NewOriginal -> Original -> MyFork

Как мне получить следующее:

NewOriginal -> MyFork

Ответ 1

Локально вы можете просто изменить цель исходного репозитория. Обычно этот репозиторий называется upstream, поэтому вы должны сделать это:

git remote set-url upstream git://example.com/NewOriginal.git

В зависимости от того, какой хост вы используете (то есть, где находится ваша вилка), могут быть некоторые дополнительные внутренние ссылки, вы не можете так легко изменить. Например, в Github вилка напрямую связана с оригиналом, из которого вы раздвоены. В этом случае вам нужно снова открыть новый проект и работать с новой вилкой.

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

Ответ 2

ПРИМЕЧАНИЕ. Следующее решение является неполным, так как вы потеряете весь контент вики и проблемы, специфичные для вашей вилки.

Вы можете добиться этого, выполнив следующие шаги:

  • Вытащите все ветки и теги из существующей вилки.
  • Удалить репозиторий на GitHub.
  • Вилка из нового репозитория.
  • При необходимости обновите удаленный URL.
  • Вставьте все локальные ветки и теги в новый репозиторий.

Ответ 3

Обновите удаленный URL в вашем репозитории:

git remote set-url origin <url to NewOriginal, e.g. git://…/bla.git>

Ответ 4

Предполагая, что вы выполнили правильное форкирование и добавление вверх по течению, см. githubHelpOnFork; чтобы просто изменить URL вверх по течению, выполните:

  • проверьте, как выглядит текущий поток и происхождение:

    git remote -v
    
  • если вы видите восходящий поток, и вы хотите просто изменить его URL-адрес, сделайте то, что предложил @poke (если не следовать ссылке helpGithub выше, чтобы добавить новый восходящий поток):

    git remote set-url upstream git://example.com/NewOriginal.git
    
  • затем убедитесь, что вверх по потоку указывает на новый URL

    git remote -v