Мне все еще не ясно, где находится репо. Вы говорите, что оно голое, но у вас тоже должно быть где-то не голое.
Если вы просто хотите перемотать локальные ветви , тогда вы хотите использовать git reset
. Так что если у вас есть локальная ветка beta
, вы можете перемотать ее так:
$ git checkout beta
$ git reset --hard HEAD~2
Это сбрасывает 3 коммита: HEAD
, HEAD~1
и HEAD~2
. Они будут собирать мусор примерно через 90 дней, поэтому вы сможете вернуть их при необходимости.
Если у вас есть удаленное хранилище с именем origin
(оно пустое) и вы хотите перемотать туда ветку , то вы можете сделать это с помощью принудительного толчка . Допустим, вы нажали 3 коммита на beta
, прежде чем они были готовы. Вы можете сохранить их в своем локальном проекте, но удалить их из удаленного репозитория, как это:
$ git push -f origin beta~3:beta
Это может быть резким для других, использующих этот репозиторий, но похоже, что вы в порядке с этим.
Если у вас только есть репо , вы можете принудительно сбросить ветку следующим образом:
$ git branch -f beta beta~3
Примечание: это также работает для первого случая перемотки локальных ветвей. Опять же, это неприемлемо для всех, кто использует этот репо.