Подтвердить что ты не робот

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

Я разблокировал репо на GitHub и отправил запрос на перенос. Составители проекта отклонили запрос на pull, но мы разработали лучшее решение на форуме. Они поручили мне создать другой запрос на тягу с альтернативными изменениями. Тем не менее, моя вилка репозитория на GitHub теперь устарела, так как обновления были перенесены на основное репо с момента разворота. Кроме того, в репозитории GitHub есть дополнительная фиксация (фиксация запроса на перенос), которой не должно быть, потому что она не была принята как часть проекта.

Я нашел этот вопрос: Как обновить вилочный хранилище GitHub?

Я выполнил инструкции, в частности, я сделал это:

git remote add upstream git://github.com/fuel/core
git fetch upstream

Это привело к:

remote: Counting objects: 93, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 69 (delta 49), reused 40 (delta 20)
Unpacking objects: 100% (69/69), done.
From git://github.com/fuel/core
 * [new branch]      1.0/master -> upstream/1.0/master
 * [new branch]      1.1/master -> upstream/1.1/master
 * [new branch]      1.2/develop -> upstream/1.2/develop
 * [new branch]      1.2/master -> upstream/1.2/master
 * [new branch]      1.3/develop -> upstream/1.3/develop
 * [new branch]      1.3/master -> upstream/1.3/master
 * [new branch]      1.4/develop -> upstream/1.4/develop
 * [new branch]      1.4/master -> upstream/1.4/master
 * [new branch]      1.5/develop -> upstream/1.5/develop
 * [new branch]      1.5/master -> upstream/1.5/master
 * [new branch]      1.6/develop -> upstream/1.6/develop
 * [new branch]      feature/better-hmvc -> upstream/feature/better-hmvc

Хорошо, так что все кажется прекрасным и хорошим. Я убедился, что я нахожусь в правильной ветке:

git checkout 1.6/develop
Already on '1.6/develop'

Слово. Хорошо, теперь для этого:

git rebase upstream/1.6/develop
First, rewinding head to replay your work on top of it...
Applying: prevent invalid XML node names

Подождите... что? Почему "запрещается использование недопустимых имен XML node"? Это запрос на вытягивание, который был отклонен разработчиками проекта. Я, очевидно, пропустил лодку по истинному значению "rebase". Теперь, если я git status говорит:

# On branch 1.6/develop
nothing to commit (working directory clean)

Когда я git log, я вижу, что половина моей проблемы решена. Изменения, которые были перенесены в проект с тех пор, как я разветвлен, теперь отражены в моем git log. Тем не менее, последняя фиксация остается "предотвращать недопустимые имена XML node". Как его стереть?

Я попытался проверить последнюю фиксацию, сделанную в проекте:

git checkout 5f31a4df55e5b6ca1b2092534063a1fce4a32181

Однако это оставляет меня в отдельном состоянии HEAD. В нем говорится, что я могу осмотреться, внести изменения и зафиксировать их. Я не думаю, что я хочу делать. Я думаю, что я хочу, чтобы HEAD указывал на фиксацию 5f31a4df55e5b6ca1b2092534063a1fce4a32181. Каков мой следующий шаг?

4b9b3361

Ответ 1

git rebase сохранит вашу фиксацию в вашей ветке. Поскольку ваш PR был отклонен, вы хотите удалить его и сделать ветку master таким же, как upstream/master.

Итак, вы хотите reset!

git checkout master
git reset --hard upstream/master

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

Ответ 2

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

Выполнение

$git rebase    
There is no tracking information....

$git checkout
Already on 'master'

$git reset --hard upstream/master
ambiguous argument upstream/master

Если возникает такая ситуация, пожалуйста, пройдите эти шаги.

Локально reset HEAD.

$git reset HEAD

внести те же изменения в репо сервера.

$git reset HEAD^

Затем он покажет сообщение об изменениях, внесенных вами в оригинальное forked repo, включая все файлы. Нестандартные изменения с именами файлов.

Теперь отмените изменения, используя:

$git stash

Теперь вы можете принудительно нажать эти изменения на Sever, чтобы указать локальное и удаленное репо на том же HEAD.

$git push origin +HEAD

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