[英]Rewriting history after merging feature branch into master
在我正在进行的个人项目中,我遇到以下情况-
N' <-- mainscreen
/
| N--O--P--Q <-- database
|/
A---B---C---D---------------------M <-- master
\ /
F--G--H--I--J--K--L <-- loginscreen
现在,尽管我对git有一些基本的经验,但是我从不了解任何良好的git实践,也从未从事过一个大型复杂项目,在此之前,我的技能一直处于停滞状态。 因此,我决定适当地学习它,并遵循此项目的一些良好做法。 快速搜索使我想到了这一点 ,我认为从所有对其的引用中,它是一个受欢迎的模型。
阅读完这篇文章后,我意识到由于我的提交中缺乏计划, loginscreen
分支中的某些代码实际上是其他分支中所需的通用代码,因此应分开存放。 因此,我决定重写分支的历史记录,以便将通用代码分离到一个新的develop
分支中。 我发现可以使用交互式重定基础来拆分提交,但是我不确定在这里是否可行,因为我已经将loginscreen
合并到了主loginscreen
(这可能是个坏主意)。 基本上我想做的是-
develop
loginscreen
相关的代码在其自己的分支中,而通用代码在develop
loginscreen
合并到develop
develop
分支上重新develop
database
和mainscreen
分支 结果应该是这样的-
A-----------------------M----------- <-- master
\ | N--O--P--Q <-- database
\ |/
B---C---D---G--I--K--L <-- develop
\ / \
F---H---J \ <-- loginscreen
\
N` <-- mainscreen
(G, I, K commits contain the common code)
就像我说的那样,这是一个个人项目,尚未得到推动,因此重写历史记录不会有任何问题。 但这有可能吗?
我可以轻松地解决这个问题。 所有我需要做的就是创建一个名为新的分支develop
的初始提交,然后樱桃采摘B,C和D.然后我创建了一个新的分支loginscreen
承诺和樱桃采摘,分离文件,合并分支机构和解决必要时合并冲突。 所有这些都导致了这样的状态-
A---------------------------------- <-- master
\
\
B---C---D--G--I--K--L--------------Q <-- develop
\ \ / \ /
F---H---J M--N--O--P <-- loginscreen
之后,添加mainscreen
和database
分支很简单, mainscreen
将提交提交到各自的develop
分支即可。
请记住,这将更改提交时间戳,有时还会更改作者时间戳(发生冲突时)。 我没有理会提交者,但是可以使用git commit --amend --date
更改作者时间戳。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.