我设置了一个 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
你需要知道你想要回滚到的提交,我称之为SHA1
git checkout -b seperate-branch
git checkout master
git reset SHA1 --hard
您已经完成。
要将其推送到 GitHub,你需要执行以下操作
git push --force origin master