Откатить главный репозиторий git и коммиты веток с точки отката

912
Whisperity

У меня есть настроенный репозиторий Git. Этот репозиторий имеет почти 700 коммитов, но все они находятся в masterветке. Я хотел бы использовать подход, при котором я откатываю эту masterветку (этот откат включает примерно 50 коммитов) до более ранней точки, чтобы она оставалась там, и начиная с этой точки, разветвляйте все последующие коммиты в отдельную ветку.

Графическое объяснение

Текущее состояние:

|-.---.---.---.---.---.---.---.---+ master aaa bbb ccc ddd eee fff ggg hhh HEAD 

Желаемое состояние:

|-.---.---.--\-| master aaa bbb ccc \ \ \.---.---.---.---.---+ seperate-branch ddd eee fff ggg hhh HEAD 

Так что masterветвь откатывается до cccкоммита и каждый коммит с этого момента ( dddи далее) перемещается в seperate-branch.

Я довольно новичок в Git, но достиг уровня подмастерьев, но все же это продвинутое использование выше моего уровня. Я использую Ubuntu 11.04 в качестве моей системы. Хранилище (кроме того, что хранится локально) имеет remoteнастройку на GitHub (если это имеет какое-то значение).

1

1 ответ на вопрос

1
Peter van der Does

You need to know the commit you want to rollback to, I'm calling it SHA1

git checkout -b seperate-branch git checkout master git reset SHA1 --hard 

And you're done.

To push it on GitHub, you will need to do

git push --force origin master