繁体   English   中英

将功能分支合并到母版后重写历史记录

[英]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 (这可能是个坏主意)。 基本上我想做的是-


  1. 基于初始提交A创建一个新的分支develop
  2. B,C,D动作致力于发展
  3. 拆分F-L提交,使得仅与loginscreen相关的代码在其自己的分支中,而通用代码在develop
  4. loginscreen合并到develop
  5. 如果可能,请删除主数据库中的合并提交M
  6. 在新的develop分支上重新develop databasemainscreen分支

结果应该是这样的-

   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

之后,添加mainscreendatabase分支很简单, mainscreen将提交提交到各自的develop分支即可。

请记住,这将更改提交时间戳,有时还会更改作者时间戳(发生冲突时)。 我没有理会提交者,但是可以使用git commit --amend --date更改作者时间戳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM