移动所有提交超出主要的初始提交

时间:2011-07-17 07:39:47

标签: git branch commit master

我一直在开发提交主分支,并希望将所有提交超出“初始提交”到一个单独的开发分支,并保持主版本的发布版本。

现在,我的树看起来像这样:

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

有人可以建议最好的方法吗?我已经看到了类似但不是确切案例的其他答案,但我不想冒险搞砸了。

2 个答案:

答案 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中包含已完成的开发提交,并且还必须重置其分支。