0

我一直在 master 分支上开发提交,并希望将所有提交超出“初始提交”移动到单独的开发分支,并保留 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

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

4

2 回答 2

6

简单地说:

(on master)
git branch development
git reset --hard A
于 2011-07-17T07:44:01.360 回答
0

首先为提交 F 创建一个新分支(分支 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

然后,移回你的主分支(不破坏你的工作树)

git branch -f master SHA1_OF_A

如果您想继续处理它,请再次结帐:

git checkout master

如果您不关心您的工作树(它很干净,即没有未提交或未暂存的更改,您可以按照@manojlds 在他的回答中的git reset --hard建议使用。

这会改变(即修剪)主分支的历史记录,因此请确保您了解后果。如果您的更改已被推送到公共存储库,其他用户将已经包含开发提交,master并且也必须重置他们的分支。

于 2011-07-17T08:01:44.827 回答