2016-02-05 3 views
1

Я сделал несколько коммитов (скажем, с идентификаторами: 1, 2, 3, 4), а затем понял, что совершил ошибку в commit 3 и хочу вернуться к версии кода на совершить 2.Git reset - ветка за мастером

я сделал:

git reset --hard 2 

Теперь мерзавец говорит:

On branch master. 
Your branch is behind origin/master by 11 commits and can be fast forwarded. 

Мне интересно, как я могу "толкать" свой код так, что каждый человек имеет эту версию.

+0

мерзавец говорит: на удаленном филиале имеется 11 фиксаций на верхней части тока фиксации (с идентификатором '2'). Вы хотите уничтожить эти 11 коммитов? или вы хотите просто удалить commit '3' из списка? – LeGEC

ответ

1

В зависимости от того, что вам нужно:

один способ просто удалить совершить 3 из истории:

$ git rebase -i <id of commit 2> 
# an editor will open a text editor, asking you to describe what you want to do 
# delete the line containing <commit 3>, save and exit 

git будет выводить некоторые сообщения указывая на его прогресс, и вы должны получить новую основную ветку, содержащую все коммиты, за исключением <commit 3>.

Затем вам нужно будет добавить --force-with-lease вариант, чтобы подтолкнуть этот отредактированный master филиал:

git push --force-with-lease origin master 
+1

Я думаю, что лучше использовать привычку использовать «-force-with-lease» вместо «-force», чтобы предотвратить непреднамеренное уничтожение коммитов, пробитых кем-то еще ... – Philippe

+0

это вызовет проблемы для других людей? – BKSpurgeon

+0

@BKSpurgeon: да, это может вызвать проблемы для других людей. Первый из них: вы можете удалить некоторые другие коммиты. Второй: это изменит историю, видимую другим пользователям, и потребует, чтобы они вручную справились с ней. Google для «git push -force» – LeGEC

2

git push -f origin Чтобы принудительно нажать и изменить историю вашего репо. Может быть, лучше всего git revert 2 фиксации, чтобы сохранить историю.

+0

Я бы определенно предложил перейти на маршрут 'git revert'. Силовое нажатие вряд ли когда-либо является хорошей идеей и потребует дальнейших шагов, которые необходимо предпринять на локальном компьютере каждого пользователя. –

+0

Если это не очень важно для других участников, я предпочитаю заставлять толчок сохранять хорошую историю в долгосрочной перспективе (потому что иметь хорошую историю недооценен!) Вместо того, чтобы делать реверс, который является кратким взглядом. .. Но вы правы, лучше делать это, если вы одиноки в своем филиале или если вы можете предупреждать или решать с другими. – Philippe

1

Сообщение, которое вы получили, указывает, что вы уже нажали на фиксации 3 и 4, поэтому жесткий сброс - не Что вы хотите сделать - эта команда изменяет историю, и вы никогда не должны пытаться изменить историю фиксации которая была нажата. Вместо этого сделайте git pull (чтобы вы были в курсе последних событий). Затем git revert 3, чтобы отменить изменения, сделанные в фиксации 3.

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