美文网首页前端开发周边Git使用程序员
Git fork项目多分支本地开发方法|创建分支的注意事项

Git fork项目多分支本地开发方法|创建分支的注意事项

作者: Jenny_L | 来源:发表于2016-12-21 15:26 被阅读1176次

    前两天使用github开发遇到一个问题,解决过程中加深了对git的理解,在这里记录一下。

    问题描述

    项目组有一个开源项目A,大家都fork了一份A'到自己的github。开发测试后提交pull request,合并到master后上线。一切都很正常。

    但由于会同时跟进多个功能点,需要改多个文件M,N,并在开发完分开提交,就选用了分支开发(branch)的方法。

    在A’主干修改的M文件,代码提交了pr,但因为依赖未上线,一直处于未合并未上线状态。
    此时需要修改功能N,就在A'的基础上新建分支functionN,开发后提交时发现,竟然有M的代码。无论怎么同步A的代码都不能提交。

    解决思路

    这个问题其实是创建functionN分支的时机不对引起的,这个分支创建于M文件合并之后,带有M的代码。只要在那之前的时间轴节点创建分支就可以解决问题了。

    具体实现

    注意:在操作前备份需要修改的代码。

    # 1.删除分支
    git branch -d functionN
    
    # 2. 回到主干
    git checkout master
    
    # 3. 找到M文件合并前的文件节点,如commit 488b192d543729fcfb4070ff5e
    git log
    
    # 4. 将文件内容同步为过去的版本
    git checkout 488b192d543729fcfb4070ff5e
    
    # 5. 创建工作分支
    git branch functionN
    
    # 6. 切换到工作分支,开始写代码
    git checkout functionN
    

    反思

    遇到这个问题,其实是自己对git工作流(workflow)不够了解。导致创建functionN分支时带有M的代码。归纳本次的git工作流如下图:

    git workflow.png

    相关文章

      网友评论

      • hainuo:应该是commit到master了。或者pr合并了
        hainuo:@梁小米Jenny 明白怎么回事了。有共同修改文件导致冲突。所以无法合并pr
        Jenny_L:@hainuo 当时的情况是,M文件就是在master开发的,pr还未合并。如最后一张图的解释

      本文标题:Git fork项目多分支本地开发方法|创建分支的注意事项

      本文链接:https://www.haomeiwen.com/subject/nnyqvttx.html