目录一、为什么需要功能分支二、实战两个需求并行开发场景一负责需求Afeature-1场景二负责需求Bfeature-2三、接手同事的分支如何继续开发别人的功能开发者A开发者B四、功能开发完成合并到主分支4.1 通过PR申请单4.2 通过命令4.3 删除远程功能分支可选4.4 删除本地分支五、远程分支删除后本地 git branch -a 依然能看到的解决办法表格用命令速查真实的团队开发中通常不会让所有人都挤在同一个分支上而是每个需求或功能都拥有独立的分支。这样每个人可以完全并行工作互不干扰最后再统一合并。Git 多人协作的本质是多个人在同一个项目上修改代码同时保证代码不混乱、版本可追溯。一、为什么需要功能分支想象一下你和你的同事同时要开发两个不同的需求你负责订单管理功能同事负责用户评论功能如果大家都在dev分支上开发你们修改的代码可能会相互覆盖而且频繁的合并冲突会严重影响效率。更好的做法是你基于dev创建一个feature-order分支同事基于dev创建一个feature-comment分支你们各自在自己的分支上愉快地编码互不打扰。当功能开发完成并通过测试后再分别合并回dev最后统一发布。这就是功能分支feature branch的核心思想。Git鼓励这种模式因为创建和切换分支非常快几秒钟内每个分支是独立的不会互相影响可以随时提交不用担心影响他人合并时可以集中处理冲突二、实战两个需求并行开发假设你们有两个需求需求A添加function1文件需求B添加function2文件我们分别用两个功能分支来开发。场景一负责需求Afeature-1基于当前分支如dev创建功能分支git checkout -b feature-1开发功能:vim function1提交并推送到远程git add function1 git commit -m add function1 git push origin feature-1此时远程仓库会多出一个feature-1分支。场景二负责需求Bfeature-2同事按照同样的方式创建feature-2分支添加function2文件并推送git branch git checkout -b feature-2 git branch vim function2 git add function2 git commit -m add function2 git push origin feature-2现在远程仓库有两个新分支feature-1和feature-2。你们各自在自己的分支上工作完全并行。此时在本地你看不见她新建的文档他看不见你新建的文档。并且推送各自的分支时候并没有任何冲突你俩互不影响用起来很舒服再来看下远端码云上此时的状态正常情况下你俩就可以在自己的分支上进行专业的开发了三、接手同事的分支如何继续开发别人的功能假设你的同事突然生病了他负责的需求还没完成需要你帮忙继续完善。他告诉你分支名叫feature-2你需要开发者A拉取最新的远程分支信息git checkout -b feature-2 origin/feature-2这条命令会创建本地feature-2分支切换到该分支设置本地feature-2跟踪远程origin/feature-2推送成功后同事稍后就能看到你的修改。开发者B回公司后B可以继续自己的开发工作那么他首先要获取到你帮他开发的内容然后接着你的代码继续开发。或者你已经帮他开发完了那他也需要在自己的电脑上看看你帮他写的代码pull 无效的原因是小伙伴没有指定本地 feature-2 分支与远程 origin/feature-2分支的链接根据提示建立 feature2 和 origin/featur-2的链接即可拉取成功四、功能开发完成合并到主分支当需求A和需求B都开发完成并测试通过后需要将代码合并到master主分支或dev分支视团队规范而定。4.1 通过PR申请单4.2 通过命令确保本地master是最新的git checkout master git pull origin master先合并feature-2同事的分支到mastergit merge feature-2推送到远程mastergit push origin master再处理feature-1是在本地的git checkout feature-1 git merge master git status git branch -a git push origin feature-1然后切换到master合并feature-1git checkout master git merge feature-1 git push origin master4.3 删除远程功能分支可选合并完成后这些功能分支就没有用了可以删除。在Gitee仓库页面找到feature-1和feature-2点击删除。或者使用命令行git push origin --delete feature-1 git push origin --delete feature-24.4 删除本地分支git branch -d feature-1 git branch -d feature-2五、远程分支删除后本地 git branch -a 依然能看到的解决办法当前我们已经删除了远程的几个分支使用 git branch -a 命令可以查看所有本地分支和远程分支但发现很多在远程仓库已经删除的分支在本地依然可以看到。例如使用命令git remote show origin可以查看remote地址远程分支还有本地分支与之相对应关系等信息。此时我们可以看到那些远程仓库已经不存在的分支根据提示使用git remote pruneorigin命令这样就删除了那些远程仓库不存在的分支。表格用命令速查操作命令创建并切换到新分支git checkout -b feature-xxx推送新分支到远程git push origin feature-xxx拉取远程新分支到本地git pull→git checkout -b feature-xxx origin/feature-xxx查看所有分支含远程git branch -a删除远程分支git push origin --delete feature-xxx删除本地分支git branch -d feature-xxx清理本地过期的远程分支引用git remote prune origin查看远程分支详细信息git remote show origin