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
相关推荐
SiYuanFeng12 小时前
新手学Git:如何把本地 Git 项目上传到 GitHub
git·github
前端若水13 小时前
git回退并合并分支操作
git
程序员鱼皮19 小时前
Git WorkTree 是什么?凭什么能让 AI 编程效率翻倍?
git·ai·程序员·编程·ai编程
懵逼的小黑子21 小时前
git与远程仓库创建连接
git
前端若水21 小时前
Git 撤销与恢复完全指南(超级详细版)
大数据·git·elasticsearch
golang学习记21 小时前
Git 2.54 来了,这个新命令让我终于敢重写历史了
git·后端
其实防守也摸鱼1 天前
AWVS下载和安装保姆级教程
linux·服务器·git
前端若水1 天前
Git 可以做的所有操作(完整分类)
大数据·git·elasticsearch
叹一曲当时只道是寻常1 天前
Reference 工具安装与使用教程:一条命令管理 Git 仓库引用与知识沉淀
人工智能·git·ai·开源·github
前端若水1 天前
Git 仓库管理命令完全指南(超级详细版)
大数据·git·elasticsearch