我团队一直在主分支的原型分支上进行开发。现在,我想将这个工作切割成不同的“特性分支”,并将它们单独合并到主分支中。我看到了几种方法,但都不太理想:
1- 从主分支创建一个新的Feature_1分支。手动将原型中的代码复制到Feature_1中。这意味着当我制作Feature_N时必须跟踪已复制的内容,而且我会失去历史记录。
2- 从原型创建一个新的Feature_1分支。以某种方式还原不属于第一个特性的代码。这避免了对git的错误操作(并保留了历史记录),但感觉合并Feature_N会变得混乱,因为我会告诉master在推送Feature_1时将更改还原。
我是否错过了更好的方法?
1- 从主分支创建一个新的Feature_1分支。手动将原型中的代码复制到Feature_1中。这意味着当我制作Feature_N时必须跟踪已复制的内容,而且我会失去历史记录。
2- 从原型创建一个新的Feature_1分支。以某种方式还原不属于第一个特性的代码。这避免了对git的错误操作(并保留了历史记录),但感觉合并Feature_N会变得混乱,因为我会告诉master在推送Feature_1时将更改还原。
我是否错过了更好的方法?
git reset HEAD~
,那么之后需要执行普通的git commit
(不带--amend
)来创建一个新的提交C1
。否则,git commit --amend
会编辑(修订)前一个提交(在本例中为B2
),你最终会得到...-B12-C2-...
。另外,你可以使用git reset HEAD~ /path/to/file
来重置单个文件,这将保留提交的其余部分,因此你可以使用git commit --amend
进行修改。 - iliisgit read-tree @~
而不是git reset @~
,或者使用普通的git commit
而不是git commit --amend
。感谢你指出这个问题,已经修复。 - jthill