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

《Git:从入门到精通(七)——Git分支管理与协作开发实战》

案例实现:

1.创建新的分支

2.

  1. git pull 操作

    • 执行 git pull 后,Git 从远程仓库 gitee.com:deng-youkang/remote-gitcode 拉取代码,发现远程新增了 dev 分支,于是在本地记录为 origin/devorigin 是远程仓库的默认别名)。
    • Already up to date” 表示本地当前分支(master)与远程对应分支(origin/master)代码一致,无需更新
  2. git branch -a 查看所有分支

    • * master:当前处于本地 master 分支。
    • remotes/origin/HEAD -> origin/master:远程仓库的默认分支是 origin/master
    • remotes/origin/devremotes/origin/master:远程仓库存在 dev 和 master 两个分支,本地通过 origin/ 前缀跟踪它们。

这张图直观展示了开发者与远程仓库的分支关联

  • 远程仓库有两个分支:master(主分支)和 dev(开发分支)。
  • 开发者 1 执行 git pull 后,本地同步了远程的 origin/master(对应远程 master)和 origin/dev(对应远程 dev),同时本地当前在 master 分支工作。

3.在d盘的git文件夹下执行终端 “模拟开发者2”

4.基于远程的 origin/dev 分支,在本地创建并切换到新的 dev 分支,同时建立本地分支与远程分支的追踪关系

  • git checkout -b dev:创建一个名为 dev 的本地分支,并切换到该分支。
  • origin/dev:指定基于远程仓库(origin 是远程仓库的默认别名)的 dev 分支来创建本地 dev 分支。
  • 输出中 “Switched to a new branch 'dev'” 表示成功切换到新建的本地 dev 分支;“Branch 'dev' set up to track remote branch 'dev' from 'origin'” 表示本地 dev 分支已设置为跟踪远程 origin 的 dev 分支,后续可通过 git pullgit push 直接与远程 dev 分支同步。

这个命令清晰展示了本地各分支与远程分支的追踪关系、最新提交的标识和说明。

在 Git 中,git push origin master 可以简化是因为 Git 支持 “默认行为” 和 “追踪关系” 的自动推导,具体原因如下:

1. 利用分支的 “追踪关系”

当本地分支(如 master)与远程分支(如 origin/master)建立了追踪关系(可通过 git branch -vv 查看),Git 会自动识别对应的远程仓库和分支。此时只需执行 git push,Git 会默认推送当前分支到与之追踪的远程分支(即等价于 git push origin 本地分支名:远程分支名)。

2. 简化命令的条件

要实现 git push 的简化,需满足以下条件之一:

  • 本地分支与远程分支已建立追踪关系(如通过 git checkout -b 本地分支 origin/远程分支 创建的分支,默认已建立追踪)。
  • 配置了 Git 的默认推送行为(如 git config --global push.default simple,这是 Git 2.0+ 的默认配置),此时 git push 会自动推送当前分支到其追踪的远程分支。

5.用户1修新增“aaa”

示例对比

  • 完整命令:git push origin master
  • 简化命令:git push(当 master 与 origin/master 有追踪关系时,效果完全一致)

这种简化是 Git 为提升开发效率设计的 “约定大于配置” 机制,在分支追踪关系明确的情况下,可大幅减少命令输入的复杂度。

 6.用户2修新增“bbb”

此时会报错,因为用户1用户2都修改了同一个文件的内容,只需pull拉到用户b处进行冲突处理即可

一、多人协作开发的准备工作

1. 搭建远程仓库
  • 在代码托管平台(如 Gitee、GitHub)创建共享的远程仓库,设置好仓库权限(团队成员需有读写权限)。
  • 团队成员通过 git clone 仓库地址 将远程仓库克隆到本地。
2. 配置个人信息

每个成员在本地配置 Git 用户名和邮箱(用于提交记录的身份标识):

3. 分支管理规划
  • 约定主分支为 master(或 main),仅用于存放稳定版本。
  • 每个成员基于 master 创建个人开发分支(如 dev-用户名),在自己的分支上开发功能,避免直接修改主分支。

二、协作开发流程

1. 拉取最新代码

开发前先拉取远程仓库的最新代码,确保本地代码是最新的:

2. 基于主分支创建个人开发分支

3. 开发与提交

在个人分支上编写代码,完成后暂存、提交:

4. 推送个人分支到远程

将个人开发分支推送到远程仓库,方便团队协作和代码审查:

三、将内容合并进 master 主分支

1. 发起 Pull Request(PR)
  • 团队成员在代码托管平台(如 Gitee)上,基于自己的远程开发分支向 master 分支发起 Pull Request(请求合并)。
  • 团队其他成员对 PR 进行代码审查,确认无误后批准合并。
2. 本地合并流程(若无需平台审查,可直接本地操作)
  • 切换到 master 分支:

  • 拉取远程 master 最新代码(确保主分支是最新的):

  • 合并个人开发分支到 master

建议按照下图方式进行合并

解决合并冲突(若有):

  • Git 会标记冲突文件,打开冲突文件手动解决冲突(保留需要的代码,删除冲突标记 <<<<<<<=======>>>>>>>)。
  • 解决后暂存冲突文件,完成合并提交:

  • 推送合并后的 master 到远程:

总结一下,在同一分支下进行多人协作的工作模式通常是这样:

  • - 首先,可以试图用 git push origin branch-name 推送自己的修改;
  • - 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;
  • - 如果合并有冲突,则解决冲突,并在本地提交;
  • - 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
  • - 功能开发完毕,将分支 merge 进 master,最后删除分支。
http://www.dtcms.com/a/520117.html

相关文章:

  • 超越传统工具:利用Reddit发现关键词的独特视角与前沿方法
  • 数据结构——二叉搜索树深度解析
  • macOS 无法在根目录创建目录的原因与解决方案
  • 11.23 鸿蒙HTTP数据请求
  • 郑州网站建设最低价网址导航的意思
  • LOESS回归
  • 跨平台开发中的图形渲染:Canvas与View+CSS的性能分析与决策路径
  • 能源经济选题推荐:可再生能源转型政策如何提高能源韧性?基于双重机器学习的因果推断
  • 《R for Data Science (2e)》免费中文翻译 (第11章) --- Communication(1)
  • 生成式对抗网络 GAN:从零理解生成对抗网络的原理与魅力
  • 李宏毅机器学习笔记30
  • 做塑胶材料的网站深圳网站设计平台
  • 【设计模式】装饰器模式(Decorator)
  • 设计模式之:享元模式
  • android 图像显示框架二——流程分析
  • CentOS 10 系统安装
  • MySQL试验部署
  • 【文献笔记】ICLR 2018 | Graph Attention Networks
  • Day69 SQLite3动态库移植 + BMP图像解析显示 + 进度条控件设计与动态文本管理
  • 通过自构建的时间服务器主机给客户端主机同步时间
  • [特殊字符] 软考架构师 vs. 考研408:全方位对比
  • C语言进阶:(一)深度剖析函数栈帧:从创建到销毁
  • 零基础从头教学Linux(Day 55)
  • 哪里有学做ppt的网站资阳的网站建设
  • Apple 开源FastVLM:AI看图说话更快更准
  • 交互式UTM坐标查询工具:让地理坐标转换变得简单
  • 初学者小白复盘15之指针(4)
  • 轻量级且简单的 macOS 应用 Forklift for mac
  • 和平板电脑厂商定制智慧养老平板有那种合作模式?
  • 无人机安防体系的音视频超低延迟重构:从“空地融合”到“实时智控”