如何使用 Git 进行多人协作开发(全流程图解)

这篇具有很好参考价值的文章主要介绍了如何使用 Git 进行多人协作开发(全流程图解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 在软件开发中,多人协作是一项必不可少的任务。而 Git 作为目前最受欢迎的分布式版本控制工具,提供了强大的功能和灵活的工作流程,使得多人协作开发变得更加高效。本篇博客将带你实践如何正确使用 Git 进行多人协作开发
 在本篇博客中,你将学到以下内容:

  1. Feature Branching 分支管理策略
  2. 多人单分支开发与多人多分支开发的差别
  3. 如何安全的解决合并冲突

分支管理策略

 Git分支策略允许开发人员在一个项目上进行协作,同时跟踪更改并维护多个版本的代码库。主流的分支管理策略有 Trunk-Based DevelopmentFeature BranchingGit Flow等等,本文将基于较为简单的 Feature Branching 分支管理策略展开。虽然分支管理策略多种多样,但最好的策略一定是与你的团队特征和项目需求相匹配的。

1.什么是Feature Branching?

 在实际开发中,master 分支非常强调环境的稳定性。因此当我们要开发新的功能或者特性时,需要从 master 分支上拉取 feacture 分支,这样开发者就能在 feacture 分支上独立开发而不影响主分支。当完成开发后,需要提交 pull requestfeacture 分支合并回 master 分支中。 通过 pull request ,仓库中的其他成员能对即将 merge 的代码进行审核并提出建议,从而保证了安全可靠性。
git多人协作开发流程,# 【Git的原理与使用】,git,流程图

2.Feature Branching如何工作?

  1. 创建 feacture 分支:feacture 分支一定是从 master 分支上拉取的
  2. feacture 分支上完成开发:通常一个分支就对应着一个特定的功能
  3. 提交 pull request:请求将分支合并回 master 分支
  4. 审查批准:其他开发人员如果对你的代码满意的话,就会同意将你的分支合并到 master 分支。通过代码审查,我们通常能在分支 merge 回主分支前发现错误
  5. 清理:完成开发后,应该及时将没用的 feacture 分支删除,保持代码仓库的整洁

 下面将结合具体的例子为大家逐步骤实践上面的流程,同时带大家体会多人在单分支上开发和在多分支上开发的区别

多人协作一:单分支

  • 任务:开发者A和开发者B在同一分支 feacture 下开发。开发者A在 README 中增加一行 aaa,开发者B在 README 中增加一行 bbb

1.准备工作

  • 场景:开发者A在创建分支前就克隆过远程仓库,而开发者B则在创建分支后才克隆远程仓库
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

  • 在实际开发中,如果要进行多人协作开发,首先需要将其他成员添加进来
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

2.创建分支

创建分支的方式有两种:

  • 在远程仓库直接创建
  • 在本地创建分支 xxx 后使用指令 git push origin xxx 在远端创建一个与本地 xxx 分支对应的 xxx 分支
  1. 在单分支场景中,我们首先采用方法一创建分支
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  2. 使用指令 git branch -r 指令可以查看远程仓库中的所有分支,但是对于开发者A而言只能看到 master 分支
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  3. 原因也不难理解,开发者A是在创建 feacture 分支前克隆远程仓库的,因此当前是落后于远程仓库的最新版本。我们需要使用 git pull 指令来更新分支信息:
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

🎯[说明]:
git pull 指令具有以下两个作用:

  1. 拉取远程分支中的最新提交,并自动合并 (需要建立追踪关系
  2. 更新远程仓库的分支信息(不需要建立追踪关系)

 如何理解建立追踪关系呢?git pull 指令的完整用法是 git pull <远程主机名> <远程分支名>:<本地分支名>,当我们完整使用 git pull 指令时,不需要考虑建立追踪关系的问题,而当我们简写为 git pull 时,本地分支默认为当前的工作分支,远程分支为与之建立链接的远程分支。当我们 clone 远程仓库时其实自动建立了本地master分支与远程master分支的追踪关系——即链接,因此我们可以采用简写的方式。

📌[建议]: 在开发前首先使用 git pull 指令,确保从最新版本开始开发

在windows上模拟开发者B:
git多人协作开发流程,# 【Git的原理与使用】,git,流程图

3.在分支上开发

开发者A:

  1. 在本地创建 feacture 分支,并与远端的 origin/feacture 分支建立连接git多人协作开发流程,# 【Git的原理与使用】,git,流程图

    • git checkout -b feacture origin/feacture 指令创建一个 feacture 分支并切换到 feacture 分支上,并建立远端 feacture 分支的追踪关系
    • git branch -a 指令用于显示本地和远端的所有分支
    • git branch -vv 指令显示本地分支与远端分支的追踪关系。可以看到此时本地的 feacture 分支已经与远端的 origin/feacture 分支建立了连接
  2. feacture 分支上完成开发,并提交到远端的 origin/feacture 分支上
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

开发者B:

  1. 在本地创建 feacture 分支,并与远端的 origin/feacture 分支建立连接
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

  2. 当我们尝试push到远端仓库时发生了冲突,原因是远端仓库的版本比我们当前的版本高(因为开发者A完成了push操作),我们首先需要 pull 远端仓库的分支内容,解决完冲突后才能再次 add + commit + push
    📌[建议]: 在开发前首先使用 git pull 指令,确保从最新版本开始开发

  3. 因为我们已经建立了本地 feacture 分支与远端 feacture 分支的链接,所以可以直接使用 git pull 指令拉取
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

  4. 手动解决冲突,从当前版本和远程仓库中的版本选择一个
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

  5. 重新 add + commit + push。此时我们就可以顺利推送到远程仓库了git多人协作开发流程,# 【Git的原理与使用】,git,流程图

4.分支合并

合并分支也有两种方式:

  • 提交 pull request,通过代码审验后合并到 master 分支
  • 在本地 master 分支上合并后再 push 到远端的 master 分支

事先声明,方法一是更被推荐的。出于教学的考虑,在单分支的版本中,先带大家用用方法二

  1. 前面提到,我们要保证主分支的稳定性,因此我们不能直接将 feacture 分支合并到 master 分支上,因为在解决合并冲突的过程中,我们就有可能在无意中改出了更大的 BUG。正确的做法是先将 master 分支合并到 feacture 分支上,解决冲突后并且确认没有 bug 后再合并到 master 分支上。先前有过masterfeacture 分支的合并记录,再合并时就不会出现冲突(都是本地操作)
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  2. 将本地的 master 分支提交到远端
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图git多人协作开发流程,# 【Git的原理与使用】,git,流程图

5.清理

完成合并后,就可以将没用的 feacture 分支删除。删除分支也有两种方式:

  • 在远端和本地分别删除 feacture 分支
  • 在本地删除 feacture 分支后推送到远端

这里先为大家呈现第一种删除方式:

  1. 远端删除 feacture 分支
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  2. 本地删除 feacture 分支
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  3. 此时我们使用 git branch -r 指令仍然能看到 origin/feacture,此时我们需要使用 git pull --prune 指令进行修剪
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

多人协作二:多分支

多人在单分支上协作开发时,经常需要解决冲突的问题;而使用多分支,各个开发者在各自的分支上独立开发,只需要在最后合并分支时解决冲突即可

  • 任务:开发者A在 feacture-1 分支下编写文件file1。开发者B在 feacture-2 分支下编写文件file1、file2

1.创建分支

前面提到,创建分支的方式有两种:

  • 在远程仓库直接创建
  • 在本地创建分支 xxx 后使用指令 git push origin xxx 在远端创建一个与本地 xxx 分支对应的 xxx 分支

我们现在采用第二种方式创建分支:

开发者A:

  1. 在本地创建 feacture-1 分支。此时在创建本地分支时,我们不能再指定与远程分支 orgin/feacture -1 建立连接,因此此时远程仓库中并没有这个分支
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

  2. 执行 git push origin feature-1 ,Git 会将本地的 feature-1 分支推送到 origin 远程仓库中的相应分支。如果远程仓库不存在名为 feature-1 的分支,则 git 会创建之;如果存在,则将修改合并到该分支上
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

  3. 使用 git branch -vv 指令就可以发现,本地的 feacture-1 分支并没有与远端的 feacture-1 分支建立追踪关系。
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

  4. 因此我们不能直接使用 git pull、git push 等缩写指令。解决方法 git 也已经提示我们了①使用完整的命令 ②建立远端分支与本地分支的追踪关系
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图 5. 采用方法②来解决问题git多人协作开发流程,# 【Git的原理与使用】,git,流程图

开发者B同理

此时远端已经多了两个分支:
git多人协作开发流程,# 【Git的原理与使用】,git,流程图

2.在分支上开发

开发者A与开发者B各自在分支上完成开发,并提交到远程分支 feacture-1feacture-2

3. pull request

我们前面提到,合并分支也有两种方式:

  • 提交 pull request,通过代码审验后合并到 master 分支
  • 在本地 master 分支上合并后再 push 到远端的 master 分支

这里我们就是采用 pull request 的方式合并分支

开发者A:

  • 提交 pull request。可自动合并说明没有遇到冲突
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  • 仓库的管理人员完成对你的审核通过、测试通过后,就可以合并到 master 分支中。在“文件”一栏中可以看到你的修改
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图git多人协作开发流程,# 【Git的原理与使用】,git,流程图

开发者B:

  • 提交 pull request。不可自动合并说明遇到了冲突
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  • 我们不能在 master 分支上处理冲突。解决方式与之前类似,先将 master 分支合并到 feacture-2 分支上,解决完冲突后再将 feacture-2 分支合并到 master 分支上
  • 切换到 master 分支上,首先 git pull 拉取最新版本的 master 分支代码!!
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  • 切换到 feacture-2 分支上,合并 master 分支。遇到冲突,冲动解决冲突
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  • 冲突解决,并推送到远端仓库
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
  • 此时再次发起 pull request 请求就不会遇到问题了
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

4.清理

前面提到,删除分支也有两种方式:

  • 在远端和本地各自删除 feacture 分支
  • 在本地删除 feacture 分支后推送到远端

现在我们演示第二种删除方式文章来源地址https://www.toymoban.com/news/detail-751565.html

  • 删除远端分支:git push origin --delete xxxgit多人协作开发流程,# 【Git的原理与使用】,git,流程图
  • 删除本地分支:git branch -D xxx
    git多人协作开发流程,# 【Git的原理与使用】,git,流程图

到了这里,关于如何使用 Git 进行多人协作开发(全流程图解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Git原理与使用】-- 多人协作

    目录 多人协作一(多人同一分支) 开发者一(Linux) 开发者二(Windous) master合并 远端上的合并 本地上的合并 总结 多人协作一(多人多分支) 开发者一(Linux) 开发者二(Windous) master合并 合并function-2 合并function-1 远程分支删除后,本地 git branch -a 依然能看到的解决办法

    2024年02月08日
    浏览(44)
  • Git企业开发控制理论和实操-从入门到深入(六)|多人协作开发

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Git企业开发控制理论和实操》希望大家多多关注!

    2024年02月11日
    浏览(52)
  • 【Git】多人协作-单分支协作

    在windosw环境下,再克隆同一个项目仓库,模拟一起协作开发的小伙伴 到此,相当于有了两个⽤⼾,分别在linux和windows上针对于同项⽬进⾏协作开发,我们的准备⼯作到此结束。 但是在实际开发当中,每个⽤⼾都有⾃⼰的gitee/github账号,如果要多⼈进⾏协同开发,必须要将⽤

    2024年02月14日
    浏览(57)
  • Git的远程操作与多人协作

    \\\"爱在地图上剥落,我离孤单几公里~\\\"          我们目前所说、所学的内容(工作区、暂存区、版本库)都只是存在于本地上,也就是说你的一台机器上只有这么一个你维护的版本库。可是Git是一个分布式版本控制系统,这又是什么意思呢?         ——前言          可以

    2024年02月15日
    浏览(57)
  • Git工作流程:如何在团队中协作?

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ 前端炫酷代码分享 ★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★ 架构咱们从0说 ★ ★ 数据流通的精妙之道★ 包括仓库

    2024年02月13日
    浏览(44)
  • 【掌握版本控制:Git 入门与实践指南】多人协作

                                                      🎬慕斯主页 : 修仙—别有洞天                                               ♈️ 今日夜电波: 泥中に咲く—ウォルピスカーター                                                      

    2024年03月16日
    浏览(55)
  • 多人协作记账账本小程序开源版开发

    多人协作记账账本小程序开源版开发 支持多人协作的记账本小程序,可用于家庭,团队,组织以及个人的日常收支情况记录,支持周月年度统计 便捷记账 便捷的记账方式,支持多种记账类型,快捷切换账本等 多账本 支持多账本,用户可以创建多个账本,并可对每个账本进

    2024年02月22日
    浏览(39)
  • 如何部署 Git 实现多人协同开发

    🎉欢迎来到Java学习路线专栏~如何部署 Git 实现多人协同开发 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,如果

    2024年02月04日
    浏览(45)
  • 团队协作:如何利用 Gitee 实现多人合作项目的版本控制

    在软件开发中,有效地管理代码是至关重要的。 Gitee 是一个功能强大的代码托管平台,提供了丰富的工具和功能,使团队能够协作开发,并轻松管理项目。而 Visual Studio Code(VS Code)是一款流行的轻量级代码编辑器,具有丰富的插件生态系统,可帮助开发人员提高效率。本文

    2024年04月25日
    浏览(50)
  • 【项目多人协作的困扰】git-cli 解决 git merge 合并时 lock 文件变化,忘记重新安装依赖的问题

    相信大家多多少少都遇到过,当主线分支的代码,合入到自己的分支的时候,如果这时候,主线中有一些 依赖的更新或者添加或者删除 ,如果合入之后,没有及时的 install 的话,项目启动的时候,可能就会报错! 使用教程 打开项目根目录,运行 随后就会在你的项目中开始

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包