2012-04-08 2 views
2

Я работаю на ветке под названием Lion, я ошибочно сделал это:Откат удаленного слияния

git push origin lion:master 

вместо

git push eng lion:master 

В основном вторая линия для выталкивания льва ветви к постановке heroku, но я ошибочно объединил весь свой код в исходный мастер.

Как я могу вернуться, чем? У меня около 200 коммитов в моем филиале.

Грег

+0

Смотрите, если вы найдете что-нибудь полезное в [this] (http://stackoverflow.com/questions/179123/how-do-i-itit-an-incorrect-commit-message-in-git), один из самых популярных SO-вопросов всех времен (на наименее до сих пор) – DOK

ответ

1

Команда «git reset» принимает необязательный аргумент фиксации. Таким образом, если у вас есть доступ к хранилищу происхождения, вы можете попробовать:

git reset [--soft | --mixed] <last-good-commit>   # in the remote/origin repository 

Если у вас нет доступа к хранилищу вы должны быть в состоянии сделать:

git checkout -b rework <last-good-commit> 
git push origin rework:master         # The push merge will produce a commit that works back to <last-good-commit> 
+1

Я получаю «! [Отклонен] доработать -> мастер (без перемотки вперед) ошибка: не удалось нажать некоторые ссылки на« [email protected]: .... » Чтобы предотвратить потерю истории, ускоренные обновления были отклонены .... –

2

Предполагая, что никто другой уже пошел и получил новые изменения:

1) Если у вас есть прямой доступ к origin хранилище, вы можете сделать git reset --hard <commit ID> на соответствующей отрасли в origin ,

2) Кроме того, вы можете сделать git push -f со старым идентификатором фиксации.

+0

Это сбрасывает только последнюю фиксацию. У меня есть 200 ... – Gregory

+0

Это не так, если вы делаете 'git reset --hard ', и это было то, во что я ехал. –

Смежные вопросы