2012-06-05 3 views
1

текущий журнал мерзавец:как вернуться в Git?

commit foo456 
Merge: foo123 bar123 
Author: foo 

Merge branch 'master' of ...... 

commit foo123 
Author: foo 

change b 

commit bar123 
Author: bar 

stable version 

Я Foo, если я хочу, чтобы вернуться к стабильной версии (фиксации bar123), я должен использовать git revert HEAD~1 или git revert HEAD~2? То есть Merge (commit foo456) также является действительным фиксацией, Я немного смущен.

ответ

3

Если вы хотите Выбросьте слияние совершить и вернуться к bar123 используйте:

git reset --hard bar123 

В этот момент, вы можете попробовать слияние снова.

Команда git revertсоздает новый коммит, который переворачивает эффект предыдущей фиксации, но наличие Revert совершает для будущих слияний могут быть запутанными и проблематичными.

+0

Кроме того, если вы уже нажали, вам понадобится «git push -f origin branchname», чтобы он запустил обновление. – OpensaurusRex

+0

Сброс git напрямую изменяет удаленную ветку, и после того, как будет зафиксирована новая фиксация метки HEAD, не так ли? , И если я использую 'git revert HEAD ~ 2', а затем' git push', это то же самое, не так ли? –

+0

Нет, 'git reset' и' git revert' сильно отличаются. Команда 'git revert' создает * новую * фиксацию, которая отменяет эффект предыдущей фиксации. Команда 'git reset' просто перемещает текущий указатель HEAD назад в предыдущее место в истории. –