Git【多人协作二】

目录

一、为什么需要功能分支?

二、实战:两个需求并行开发

场景一:负责需求A(feature-1)

场景二:负责需求B(feature-2)

三、接手同事的分支:如何继续开发别人的功能?

开发者A

开发者B

四、功能开发完成:合并到主分支

[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鼓励这种模式,因为:

  • 创建和切换分支非常快(几秒钟内)

  • 每个分支是独立的,不会互相影响

  • 可以随时提交,不用担心影响他人

  • 合并时可以集中处理冲突

二、实战:两个需求并行开发

假设你们有两个需求:

  1. 需求A:添加function1文件

  2. 需求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-1feature-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(同事的分支)到master

    git merge feature-2

  • 推送到远程master

    git 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-1feature-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 pullgit 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
相关推荐
小陈工3 小时前
2026年4月1日技术资讯洞察:AI芯片革命、数据库智能化与云原生演进
前端·数据库·人工智能·git·python·云原生·开源
我先去打把游戏先4 小时前
Git 一个本地仓库同时推送到两个远程仓库(私人 GitHub + 公司 Git)保姆级教程
git·vscode·单片机·嵌入式硬件·物联网·学习·github
jian110585 小时前
Mac git生成SSH秘钥
git·macos·ssh
要不枉此行6 小时前
Git 批量拉取所有远程分支到本地(Git Bash + CMD 双版本)
git
李少兄6 小时前
Git远程连接指南:SSH与HTTPS协议详解
git·https·ssh
凉生阿新6 小时前
【React】从零配置 Git Hooks:提交前自动校验与格式化(Vite + React 19)
前端·git·react.js
C++ 老炮儿的技术栈17 小时前
分享一个安全的CString
c语言·c++·windows·git·安全·visual studio
努力干饭中19 小时前
Git Rebase 最佳实践
前端·git
ノBye~20 小时前
Docker Compose+Jenkins自动化部署全流程
git·docker·jenkins