Вилка github: ваша ветка на 5 минут вперед, как очистить ее, не нажимая

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

Я работал над локальной копией вилки, создал ветвь для моих модификаций и объединил ее с мастером. Затем я нажал мастер на вилку github, чтобы создать запрос на перенос.

Проблема в том, что в последнее время мой запрос на перенос был отклонен. Итак, теперь я нахожусь на пятом месте от оригинального мастера. Каковы решения для того, чтобы быть даже с оригинальным хранилищем?

Должен ли я проверять ведущего мастера в новой ветки и создать с ним новый мастер (как это сделать?)

Или лучше удалить мою вилку github (у меня есть предыдущие принятые коммиты) и воссоздать ее (здесь вы можете увидеть репозитории github) https://github.com/cedlemo/ruby-gnome2 p >

Ответы

Ответ 1

Во-первых, вы должны всегда делать свой PR-формат веткой, а не от master.
master предназначен для зеркалирования upstream/master, при этом 'upstream' является именем исходного репо, которое вы разветвляли.

В вашем случае убедитесь, что upstream существует, создайте ветвь для ссылки на ваши текущие исправления и reset master на upstream/master:

До:

  z--z (upstream/master, with new commits)
 /
z--y--y--y (master with local patches, origin/master)

Запомните текущую работу:

git checkout master
git checkout -b mybranch
git remote add upstream /url/original/repo
git fetch upstream

# reset master to upstream/master
git checkout master
git reset --hard upstream/master
git push --force

  y--y--y (mybranch)
 /
z--z--z   (master, upstream/master, origin/master)

# replay the patches (even they are rejected for now) on top of master
git checkout mybranch
git rebase master
git push -u origin mybranch

        y'--y'--y' (mybranch, origin/mybranch)
       /
z--z--z   (master, upstream/master, origin/master)

Здесь: git reset --hard upstream/master будет reset master HEAD в обновленном upstream/master, чтобы мастер отражал ту же историю, что и в исходном репо.

Но так как некоторые коммиты, которые ранее выполнялись на master и нажимали на fork (origin/master), вам нужно было бы заменить эту историю новым состоянием master. Следовательно, git push --force.

Rebasing mybranch позволяет этим текущим исправлениям основываться на самой последней фиксации исходного репо.