使用删除的代码从 master 创建一个分支
Create a branch from master with removed code
我写了一些代码来实现一个项目的两个新功能,但我将更改提交给了 master。我现在意识到这是一个错误,因为其中一个功能运行良好,而另一个则不然。
我想保留 master 中的工作特性代码,但从 master 中删除非工作特性代码。
我想在新分支中拥有项目的当前版本(具有两个功能)。
我只想从 master 创建一个新分支,然后从 master 的非工作特性中删除代码,但我担心提交的顺序基本上是错误的,当我合并分支时在某个时候回到 master,git 将只丢弃非工作功能的代码,因为新分支将落后于删除该代码的提交。
有更好的方法吗?
首先,您应该将当前的主分支保存为开发分支,使用
git checkout -b development
接下来,您需要恢复您的 master(因为 master 不是用于开发的,除非您是唯一的开发者并且您知道自己在做什么,否则请认为它是神圣不可侵犯的)。
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 中为功能 1 创建一个新分支,并将功能 1 的 cherry pick 提交到该分支,使用
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
。
我写了一些代码来实现一个项目的两个新功能,但我将更改提交给了 master。我现在意识到这是一个错误,因为其中一个功能运行良好,而另一个则不然。
我想保留 master 中的工作特性代码,但从 master 中删除非工作特性代码。
我想在新分支中拥有项目的当前版本(具有两个功能)。
我只想从 master 创建一个新分支,然后从 master 的非工作特性中删除代码,但我担心提交的顺序基本上是错误的,当我合并分支时在某个时候回到 master,git 将只丢弃非工作功能的代码,因为新分支将落后于删除该代码的提交。
有更好的方法吗?
首先,您应该将当前的主分支保存为开发分支,使用
git checkout -b development
接下来,您需要恢复您的 master(因为 master 不是用于开发的,除非您是唯一的开发者并且您知道自己在做什么,否则请认为它是神圣不可侵犯的)。
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 中为功能 1 创建一个新分支,并将功能 1 的 cherry pick 提交到该分支,使用
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
。