我一直在开发提交主分支,并希望将所有提交超出“初始提交”到一个单独的开发分支,并保持主版本的发布版本。
现在,我的树看起来像这样:
master: A - B - C - D - E - F
我希望它看起来像这样:
development: B - C - D - E - F
/
master: A -----------------
这样我就可以像这样合并一个版本:
development: B - C - D - E - F --- X
/ \
master: A ----------------------- Y
有人可以建议最好的方法吗?我已经看到了类似但不是确切案例的其他答案,但我不想冒险搞砸了。
答案 0 :(得分:6)
简单起见:
(on master)
git branch development
git reset --hard A
答案 1 :(得分:0)
首先为commit F创建一个新分支(分支主服务器上的最后一次提交):
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
然后,移回你的主分支(不破坏你的工作树)
git branch -f master SHA1_OF_A
如果您想继续使用它,请再次结帐;
git checkout master
如果您不关心您的工作树(它是干净的,即没有未提交或未分期更改,您可以按照@manojlds in his answer的建议使用git reset --hard
。
这会改变(即修剪)主分支的历史,所以一定要了解后果。如果您的更改已被推送到公共存储库,则其他用户将在master
中包含已完成的开发提交,并且还必须重置其分支。