2012-06-19 2 views
2

Я искал много сообщений на git reset --hard <commit>, и я перезапускаю преждевременно объединенную ветвь к состоянию, чтобы зафиксировать бит в истории. Текущее состояние «мастера» выглядит неплохо, но git status говорит, что моя локальная ветка отстает от начальника/хозяина на 24 фиксации и может быть перенаправлена ​​вперед. Я не могу нажать без повторного слияния оригинала/мастера. Есть ли способ пропустить эти коммиты и сказать: «Я не хочу их»?Как избежать сообщения «может быть быстро переадресовано» после сброса git --hard <sha1>?

Это центральная установка репо, и один из моих сотрудников объединил свою длинную ветвь dev с мастером по аварии и не мог понять, как отступить, поэтому я пытался сделать это за него.

Recap команд (из памяти, это было два дня испытание)

Обнаруженной ошибку, когда я принес и проверил мастер, сообщил сослуживец. Он не мог заставить его сбросить так ... я

git merge master origin/master 
git reset --hard <commit_I_wanted> 
git push # is rejected 
git status # gives me the "behind by x commits, can be fast-forwarded" message 

Спасибо, Hans

ответ

2

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

git push --force 

В дальнейшем используйте вместо этого git revert, который создает новую фиксацию, которая отменяет изменения, а не переписывает историю.

Опять же, git push -force перепишет историю на удаленном конце. Вы были предупреждены.

+0

Хорошо, я подумаю, что через. Я не использовал revert, потому что я читал, что было бы сложно (невозможно?) Позже слить эту ветку развития. Что я читал (в нескольких местах), сказал, что revert удаляет изменения, но, похоже, что изменения в ветвь была объединена, поэтому она не будет снова сливать их. – Hans

+0

Что делать, если они внесли изменения и нажали (для целей резервного копирования) другие ветки, которые я не коснулся? Если я сделаю так, чтобы я взял и объединил каждую из этих ветвей, тогда я буду в порядке, не так ли? – Hans

+0

Сделайте git push -f origin <отрасль для перезаписи>, а затем вы можете безопасно извлечь и объединить эти другие ветви в свою локальную ветвь <<, чтобы перезаписать> ", а затем снова нажать. – flumpb

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