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
相关推荐
jian110585 分钟前
android studiod git在git reset origin/main以后,会有删了又新建的导包问题
git
搬砖的梦先生4 小时前
Codex 小步迭代 + Git Commit + 多任务并行组合版
大数据·git·elasticsearch
phltxy6 小时前
Redis Java 集成到 Spring Boot
数据库·redis·git
空太Jun7 小时前
Git 使用学习笔记
笔记·git·学习
空中海7 小时前
Git-01:基础篇 — 版本控制与日常操作
git·学习
TE-茶叶蛋8 小时前
JetBrains IDE(如 IntelliJ IDEA)的 Git 面板
ide·git·intellij-idea
蓝黑墨水8 小时前
群晖使用git遇到的问题
git
空中海10 小时前
Git-02:协作篇 — 分支工作流、合并变基与远程协作
git
空中海10 小时前
Git-03:专家篇 — 底层原理、故障恢复、性能安全与面试题
git
霜落花轻扬1 天前
git相关命令
git