Есть у меня два репозитория, один bare на сервере, а другой у меня на машине.
Я хочу отменить изменения последних двух коммитов.
делаю git reset 6fa93cb0a07c9b9b5dbd03d5dfa861c1fe23afc8 //reset до нужной мне ревизии
делаю git pull
Мне естественно отвечают
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'root@123.123.123.123:/repositories/repo.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Если я сделаю git pull у меня появятся отбратно те ветки которые мне не нужны.
Нехорошо так делать (push --force). Будут большие проблемы при попытке синхронизации с репозиторием у остальных клиентов. Есть правило — не модифицировать историю комитов, которые доступны публичны. Именно по этой причине.
git revert создаст еще один коммит, зачем это нужно когда автор единственный пользователь репозитория? делайте как ataraev советует, это больше походит на то, чего Вы пытаетесь добиться.
ЗЫ. К слову, для удаления коммитов push --force безобиден. Ну а уж тем более если один с ним работаешь. Но конечно два реверт-коммита делают историю солиднее :)
Для удаления с головы — безобиден (вот только удаленные так коммиты вернутся обратно, когда закомитится кто-нибудь с неотредактированной историей). Удаление из середины порождает новую цепочку коммитов, не имеющих с первоначальной ничего общего. Два реверт комита делать не обязательно — можно слить в один.