Git: Как отменить мои изменения после неудачного пулл-запроса? - PullRequest
0 голосов
/ 19 июня 2011

Я внес некоторые изменения в пакет на Github и отправил запрос на извлечение. Автор решил не объединять мои изменения, поэтому я ушел с другой копией пакета. Как отменить мои изменения и создать еще один запрос извлечения с новым кодом, но не нажимая отклоненный код?

Ответы [ 3 ]

3 голосов
/ 14 октября 2011

От вашей главной головы, которая вышестоящему не требовалась

$ git checkout -b myunwantedbranch
$ git checkout master
$ git reset --hard upstream/master

Ваши локальные изменения теперь находятся на ветке myunwantedbranch, а ваш мастер такой же, как и восходящий.(По сути, вы создаете правильное имя для этой ветви, а затем перематываете все ненужные вещи из основной ветви.)

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

1 голос
/ 19 июня 2011

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

git checkout upstream/master
git checkout -b <new-branch>

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


Если исходный репозиторий был обновлен с тех пор, вы можете сначала выполнить выборку

git fetch upstream master
git checkout FETCH_HEAD  # or upstream/master
git checkout -b <new-branch>

Более того, если вы не заботитесь о своих изменениях и хотите полностью от них избавиться, вы можете просто запустить

git reset --hard upstream/master  # go back to where you were 
                                  # before and changes were made
git pull upstream                 # update your repository

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


РЕДАКТИРОВАТЬ:
Я только что увидел комментарий Догберта. Эта ссылка описывает, как вы можете получить основную ветку upstream и включить ваши изменения с этого момента.Я объяснил, как создать новую ветку, синхронизированную с основной веткой апстрима.Так что я не совсем уверен, что тебе нужно сейчас.

0 голосов
/ 15 февраля 2014

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

Что я сделал:

  1. Создать новую ветку git checkout -b reverting_changes_branch
  2. Пробег git reset --hard upstream/master
  3. Принудительное изменение толчка с -f, как это git push -f origin master
  4. Вернулся в мою первоначальную ветку и подтолкнул мои коммиты

Это был мой безопасный способ сделать это, может быть, есть более простой способ.

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