目录
[4.1 通过PR申请单](#4.1 通过PR申请单)
[4.2 通过命令](#4.2 通过命令)
[4.3 删除远程功能分支(可选)](#4.3 删除远程功能分支(可选))
[4.4 删除本地分支](#4.4 删除本地分支)
[五、远程分支删除后,本地 git branch -a 依然能看到的解决办法](#五、远程分支删除后,本地 git branch -a 依然能看到的解决办法)
真实的团队开发中,通常不会让所有人都挤在同一个分支上,而是每个需求或功能都拥有独立的分支 。这样每个人**可以完全并行工作,互不干扰,最后再统一合并。**Git 多人协作的本质,是多个人在同一个项目上修改代码,同时保证代码不混乱、版本可追溯。
一、为什么需要功能分支?
想象一下,你和你的同事同时要开发两个不同的需求:
-
你负责订单管理功能
-
同事负责用户评论功能
如果大家都在dev分支上开发,**你们修改的代码可能会相互覆盖,**而且频繁的合并冲突会严重影响效率。更好的做法是:
-
你基于
dev创建一个feature-order分支 -
同事基于
dev创建一个feature-comment分支
你们各自在自己的分支上愉快地编码,互不打扰。当功能开发完成并通过测试后,再分别合并回dev,最后统一发布。
这就是**功能分支(feature branch)**的核心思想。Git鼓励这种模式,因为:
-
创建和切换分支非常快(几秒钟内)
-
每个分支是独立的,不会互相影响
-
可以随时提交,不用担心影响他人
-
合并时可以集中处理冲突
二、实战:两个需求并行开发
假设你们有两个需求:
-
需求A:添加
function1文件 -
需求B:添加
function2文件
我们分别用两个功能分支来开发。
场景一:负责需求A(feature-1)

-
基于当前分支(如dev)创建功能分支
git checkout -b feature-1
-
开发功能:vim function1
-
提交并推送到远程
git add function1
git commit -m "add function1"
git push origin feature-1

此时,远程仓库会多出一个feature-1分支。
场景二:负责需求B(feature-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-1:git checkout master
git merge feature-1
git push origin master
4.3 删除远程功能分支(可选)
合并完成后,这些功能分支就没有用了,可以删除。在Gitee仓库页面,找到feature-1和feature-2,点击删除。或者使用命令行:
git push origin --delete feature-1
git push origin --delete feature-2
4.4 删除本地分支
git branch -d feature-1
git branch -d feature-2
五、远程分支删除后,本地 git branch -a 依然能看到的解决办法
当前我们已经删除了远程的几个分支,使用 git branch -a 命令可以 查看所有本地分支和远程分支, 但发现很多在远程仓库已经删除的分支在本地依然可以看到。例如:

使用命令 git remote show origin ,可以查看remote地址,远程分支,还有本地分支与之相
对应关系等信息。

此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune
origin 命令:

这样就删除了那些远程仓库不存在的分支。
表格:用命令速查
| 操作 | 命令 |
|---|---|
| 创建并切换到新分支 | 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 |