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

字数 382阅读 2026

前两天使用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

推荐阅读更多精彩内容