使用已删除的代码从master创建分支

时间:2015-06-07 04:31:28

标签: git merge branch

我写了一些代码来实现项目的两个新功能,但我将更改提交给master。我现在意识到这是一个错误,因为其中一个功能运行良好,另一个功能不正常。

我想将工作功能代码保留在master中,但是从master中删除非工作功能代码。

我希望在新分支中拥有项目的当前版本(具有这两个功能)。

我只是从master创建一个新的分支,然后从master中删除非工作特性的代码,但我担心提交基本上会以错误的顺序,当我将分支合并回在某些时候掌握,git将丢弃非工作特性的代码,因为新分支将落后于删除该代码的提交。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

首先,您应该使用

将当前主分支保存为开发分支
git checkout -b development

接下来,你需要恢复你的主人(因为主人不是为了开发,除非你是唯一的开发人员并且你知道你在做什么,否则认为它是神圣不可侵犯的)。

git branch -D master && git checkout -b master --track origin/master

如果您没有上游源存储库(github / bitbucket / gitlab等),则可以使用git reset HEAD,或者使用git checkout -b master <SHA_of_last_sane_commit_on_master>

现在,使用

为master中的feature 1创建一个新的分支,并为该分支创建feature to 1
git checkout -b feature_1
git cherry-pick SHA_of_first_commit_for_feature_1
git cherry-pick SHA_of_second_commit_for_feature_1
# and so on.

接下来,以与上面相同的方式为要素2创建新分支。

这假设你的提交不会重叠2个功能,如果有,你必须手动更改文件的内容。

现在,合并时,您需要做的只是将feature_1合并到master,然后将feature_2合并到master