Moving all commits beyond initial commit off master

橙三吉。 提交于 2019-12-25 01:36:54

问题


i have been developing committing on the master branch, and would like to move all commits beyond the "initial commit" to a separate development branch, and keep the master for release versions.

right now, my tree looks like this:

master: A - B - C - D - E - F

i would like it to look like this:

development:   B - C - D - E - F
              /
master:      A -----------------

that way i would be able to merge a release like so:

development:   B - C - D - E - F --- X
              /                       \
master:      A ----------------------- Y

can someone suggest the best way to do this? i've seen other answers with similar but not exact cases, but i don't want to take the chance of screwing something up.


回答1:


To be simple:

(on master)
git branch development
git reset --hard A



回答2:


first create a new branch for commit F (last commit on branch master):

git checkout -b dev master # or directly using the commit hash:
git checkout -b dev SHA1_OF_F # if master is currently checked out:
git checkout -b dev

then, move back your master branch (without destroying your working tree)

git branch -f master SHA1_OF_A

checkout master again if you want to continue working on it:

git checkout master

if you don't care about your working tree (it is clean, i.e. there are no uncommitted nor unstaged changes, you can use git reset --hard as suggested by @manojlds in his answer.

this alters (i.e. prunes) history of the master branch, so be sure you understand the consequences. if your changes have already been pushed to a public repo other users will have the development commits already contained in master and would have to reset their branch too.



来源:https://stackoverflow.com/questions/6722539/moving-all-commits-beyond-initial-commit-off-master

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!