当前位置: 首页 > news >正文

Git创建合并分支、多人协作

除了git add、git commit、git push、git pull等基础操作,我们也要了解掌握以下关于git的几种常见功能。

一、创建与合并分支

基础概念:为什么需要分支?

分支是 Git 的核心功能,本质是独立的代码开发线,主要作用有 3 个:

  • 隔离开发:在不影响主代码(如main分支)的前提下,开发新功能或修复 bug。
  • 并行协作:多人同时开发不同功能,各自在自己的分支操作,互不干扰。
  • 版本回溯:若分支开发失败,可直接删除,不会影响主分支代码。

常用分支类型:

  • main/master:主分支,存放正式上线的代码,禁止直接在上面修改。
  • develop:开发分支,团队日常协作的基础分支,从main分支创建。
  • feature/xxx:功能分支,开发新功能时创建,从develop分支创建,完成后合并回develop
  • bugfix/xxx:修复分支,修复开发中的 bug,从develop创建,完成后合并回develop

核心操作:创建与合并分支步骤

1. 分支创建与切换

先确保本地代码与远程同步(可选但推荐),再创建并切换到新分支。

操作目标命令说明
查看当前分支git branch带*的是当前所在分支
新建分支(不切换)git branch 分支名例:git branch feature/login
新建并切换到分支git checkout -b 分支名旧版 Git 命令,一步完成创建 + 切换
新建并切换到分支(新版)git switch -c 分支名新版 Git 推荐命令,更直观
切换到已有分支git checkout 分支名 / git switch 分支名例:git switch develop
2. 分支开发与提交

在新分支开发完成后,需要提交修改到本地仓库。

  1. 查看修改内容:git status(确认哪些文件被修改)
  2. 添加修改到暂存区:git add 文件名(单个文件)或 git add .(所有修改文件)
  3. 提交到本地仓库:git commit -m "提交说明"(说明要清晰,例:git commit -m "完成登录功能:添加账号密码验证"
3. 分支合并(关键步骤)

开发完成后,需将功能分支合并到目标分支(如develop)。

以 “将feature/login合并到develop” 为例:

  1. 切换到目标分支:git switch develop(必须先切到要合并进的分支)
  2. 拉取最新代码(避免冲突):git pull origin develop(同步远程最新的develop代码)
  3. 执行合并:git merge 功能分支名(例:git merge feature/login
  4. 推送合并结果(若需同步远程):git push origin develop

常见问题:合并冲突处理

当两个分支修改了同一文件的同一部分时,Git 无法自动合并,会提示 “冲突(Conflict)”。

1. 识别冲突

合并时若出现类似提示,说明有冲突:

Auto-merging src/login.js
CONFLICT (content): Merge conflict in src/login.js
Automatic merge failed; fix conflicts and then commit the result.
2. 解决冲突步骤
  1. 打开冲突文件(如src/login.js),Git 会用特殊标记标注冲突部分:

  2. 手动修改代码:删除标记,保留正确的内容(例:保留const loginBtnText = "立即登录";
  3. 标记为已解决:git add 冲突文件名(例:git add src/login.js
  4. 完成合并:git commit -m "解决登录功能合并冲突:统一登录按钮文本"

实用技巧:分支管理补充

  • 删除本地分支:功能合并后,可删除无用分支,git branch -d 分支名(例:git branch -d feature/login
  • 强制删除未合并分支:若分支开发废弃,需强制删除,git branch -D 分支名(注意:此操作不可恢复)
  • 临时保存工作区:切换分支前若有未提交的修改,可先用git stash暂存,切换后用git stash pop恢复。

二、多人协作

(一)多人协作核心原则

多人协作的本质是 “共享远程仓库,通过分支同步代码”,核心原则有 3 点:

  • 远程仓库(如 GitHub/GitLab)是 “中央枢纽”,所有成员通过它同步代码。
  • 禁止直接修改远程主分支(main/master),需通过 “功能分支 + 合并请求” 流程提交代码。
  • 频繁同步:开发中定期拉取远程最新代码,减少合并冲突。

(二)多人协作基础流程(必看)

假设团队共享远程仓库https://github.com/team/project.git,以 “开发新功能并合并到主分支” 为例:

1. 初始化:克隆远程仓库到本地

首次参与项目时,先把远程仓库克隆到本地:

git clone https://github.com/team/project.git # 克隆仓库到本地

cd project # 进入项目目录

2. 日常开发:创建分支并提交代码

每人在独立分支开发,避免直接修改main

# 1. 确保本地main分支与远程同步(每次开发前先做)
git switch main  # 切换到主分支
git pull origin main  # 拉取远程main最新代码(关键:避免基于旧代码开发)# 2. 创建自己的功能分支(从main分支创建)
git switch -c feature/yourname/xxx  # 例:feature/zhangsan/login(含姓名,方便追溯)# 3. 开发并提交代码(小步提交,每次提交只做一件事)
git add .  # 添加修改
git commit -m "feat(login): 添加验证码输入框"  # 提交说明(规范见下文)# 4. 推送到远程自己的分支(首次推送需关联远程分支)
git push -u origin feature/zhangsan/login  # -u:关联本地与远程分支,后续直接git push即可
3. 同步更新:拉取他人已合并的代码

如果其他人已向main提交了新代码,需同步到自己的分支,避免冲突:

# 切换到自己的功能分支
git switch feature/zhangsan/login# 拉取远程main的最新代码并合并到当前分支
git pull origin main  # 等价于:git fetch origin main + git merge origin/main# 若合并时有冲突,按“分支合并冲突处理”步骤解决(见上一篇笔记),解决后提交:
git add .
git commit -m "merge: 同步main最新代码,解决登录模块冲突"
git push  # 推送更新到远程自己的分支
4. 完成开发:提交合并请求(PR/MR)

功能开发完成后,通过远程仓库(如 GitHub)提交 “合并请求”,让团队审核:

  1. 登录远程仓库(如 GitHub),找到自己的分支feature/zhangsan/login
  2. 点击 “New pull request”(PR),选择目标分支为main
  3. 填写说明(功能描述、测试情况等),指派审核人。
  4. 审核通过后,由管理员合并到main分支(合并后可删除功能分支)。

(三)协作关键操作:远程仓库交互

操作目标命令说明
查看远程仓库信息git remote -v显示远程仓库地址(origin 是默认别名)
拉取远程分支最新代码git pull origin 远程分支名例:git pull origin develop(拉取远程 develop 并合并到本地当前分支)
推送本地分支到远程git push origin 本地分支名首次推送加-u关联,后续直接git push
跟踪远程新分支git switch -c 本地分支名 origin/远程分支名远程新增分支后,本地创建对应分支并跟踪
查看远程分支列表git branch -r显示所有远程分支(前缀 origin/)
删除远程分支git push origin --delete 远程分支名例:git push origin --delete feature/old(需权限)

(四)协作规范:减少混乱的核心

1. 分支命名规范

统一格式,方便识别用途和负责人:

  • 功能分支:feature/姓名/功能名(例:feature/lisi/payment
  • 修复分支:bugfix/姓名/问题描述(例:bugfix/wangwu/login-error
  • 紧急修复:hotfix/问题编号(例:hotfix/BUG-123,直接从 main 创建)
2. 提交信息规范

用结构化描述,方便追溯历史:

# 格式:类型(模块): 具体描述(英文冒号+空格)
git commit -m "feat(购物车): 支持批量删除商品"  # 新功能
git commit -m "fix(订单): 修复支付后状态未更新问题"  # 修复bug
git commit -m "docs: 更新API文档中的参数说明"  # 文档修改
git commit -m "refactor(用户): 重构登录验证逻辑(无功能变更)"  # 代码重构
3. 代码审查(PR/MR)规范
  • 提交 PR 前:确保本地已同步远程目标分支最新代码,且通过本地测试。
  • PR 描述:说明 “做了什么”“改了哪些文件”“测试方式”,附相关截图(如 UI 修改)。
  • 审核要点:代码风格、逻辑正确性、是否有冗余代码、是否影响现有功能。

(五)常见协作问题处理

1. 本地修改与远程冲突(拉取时出错)

场景:自己修改了文件 A,别人也修改了文件 A 并已合并到远程 main,拉取时冲突。

解决步骤:

# 1. 暂存本地未提交的修改(避免丢失)
git stash  # 暂存工作区修改# 2. 拉取远程最新代码(此时无冲突,因为本地修改已暂存)
git pull origin main# 3. 恢复暂存的修改,并解决冲突
git stash pop  # 恢复后可能出现冲突# 4. 打开冲突文件,按“<<<<<<< HEAD”标记手动解决,然后提交
git add .
git commit -m "merge: 解决与远程main的冲突"
2. 误推代码到远程分支

场景:不小心把错误代码推到了远程功能分支。解决:本地修改后强制推送(仅自己的分支可用,禁止对公共分支用--force):

# 本地修改并提交正确代码
git add .
git commit -m "fix: 修正误提交的错误代码"# 强制推送覆盖远程分支(仅自己的分支!)
git push --force origin feature/yourname/xxx
3. 远程分支被删除,本地残留

场景:远程功能分支已被删除,但本地仍能看到。解决:清理本地无效的远程分支跟踪信息:

git fetch --prune  # 同步远程删除的分支,本地自动清理无效跟踪

(六)实用技巧:提升协作效率

  • 定期 “小步提交”:每次修改少量代码就提交,减少单次合并的冲突范围。
  • git fetch先看更新:不确定远程修改是否影响自己时,先 fetch 再查看:
git fetch origin main  # 拉取远程main最新代码到本地origin/main(不合并)
git diff origin/main  # 对比本地当前分支与远程main的差异
  • 避免多人改同一文件:分工时明确模块负责人,修改前沟通是否有人正在修改目标文件。

遵循这些流程和规范,能大幅减少多人协作中的代码冲突和沟通成本。

http://www.dtcms.com/a/565177.html

相关文章:

  • 怎么做地下彩票网站郑州做网站那家做的好
  • 网站这么做项目ppt制作模板
  • 有什么做logo网站淮北矿业集团工程建设公司网站
  • 基于springboot的大型商场应急预案管理系统
  • 凌恩又升级内容啦!160+项分析!
  • 安装 Conda 并配置 LLM 开发环境
  • 网站建设淘宝好评注册岩土工程师
  • 小说网站开发中遇到的问题网站保护等级是企业必须做的么
  • /tmp/jave/ffmpeg-amd64-2.4.6-SNAPSHOT 的生成者和生成原因
  • 基础开发工具--编译器g++/gcc 自动化构建make/Makefile
  • Linux 常用命令速查
  • npj Digital Medicine|单细胞 × 空间 × 去卷积:乳腺癌基质-免疫生态的图谱分析与ICB 悖论
  • Docker爆红且安装非C盘处理方案
  • NAS/SAN存储:NFS/iSCSI/FC 存储协议与应用场景
  • 基于张祥前统一场论的太空中引力确定方法研究
  • 【会议征稿】第二届环境工程、城市规划与设计国际学术会议(EEUPD 2025)
  • 上外网看新闻去哪个网站创建目录wordpress
  • 双星开源:Astron-Agent 与 Astron-RPA 在 GitCode 上线,加速 AI 智能体时代!
  • 网站建设推广公司需要哪些岗位wordpress的缩略图无法显示
  • 在线免费看影视网站广州百度网络推广
  • 《如何设计一个秒杀系统》学习笔记
  • 4.1卷积层
  • 杭州亚松电子:安全领域的责任担当与文化传承
  • 移动端可视化大屏工具技术实践:从适配到智能交互的全方案解析
  • 从权限混沌到安全有序:金仓数据库的权限隔离如何超越MySQL
  • Python:word(doc、docx)批量转pdf
  • wordpress view插件百度seo排名如何提升
  • 通过重构大肠杆菌中的甲基与硫供给系统实现麦角硫因的高效生产--文献精读169
  • 【高并发服务器:HTTP应用】十四、Util工具类的设计与实现
  • 北京互联网网站建设价格网站设计建站