git通过fork-merge request实现多人协同

本文介绍了Git在多人协同开发中的fork-merge机制,包括仓库结构模型、开发与提交流程,以及这种模式的优点,如代码审查和独立分支操作。
摘要由CSDN通过智能技术生成

一、问题

对于一个项目,如果需要多人协同开发,大家都在原始仓库中进行修改提交,经常会发生冲突,而且一不小心会把别人的代码内容覆盖掉。为了避免这样的问题,git提供了fork-merge request这样的协同方式。

二、仓库框架模型

  1. 首先git仓库分为远端仓库和本地仓库分别对应上图的remote和local。
  2. source repository表示项目的原始仓库内容,一开始只创建了这一个仓库,是大家进行fork的起点,也是用于构建、发布的仓库。
  3. 每个参与者在source repository的基础上fork一个新的远程仓库user repository,其内容与当前source repository相同,但是他是独立出去的新仓库,后续除非手动更新,否则不会随着source repository同步。
  4. 通过git clone user repository命令,将user repository克隆到本地,也就是local repository。此时local repository只与user repository绑定,而与source repository没有任何直接联系。

并且通过git remote -v可以看到只有一个origin仓库,关联user repository的url。

  1. 之后再通过git remote add origin_src source repository,将source repository与local repository绑定,并设置名称为origin_src(这里名称可以随便取,只要与原有的origin重复即可)。

再通过git remote -v可以看到除了origin仓库外,还有有一个origin_src仓库,关联source repository的url。

至此,仓库就搭建好了,可以在本地进行开发,后续进行提交与合并。

三、开发、提交流程

3.1 提交与合并

  1. 在local repository开发完成后,通过git add和git commit命令完成本地仓库的提交记录。
  2. 然后通过git push origin master命令将local repository的master分支内容推到user repository中。
  3. 然后再从浏览器进入user repository,发起merge request,请求将user repository的master分支内容合并到source repository的某个分支(如master)中。

而在发起这个请求后,并不会直接合并,而是处于待合并的状态,并且可以指定相关人员对合并内容进行审阅,确保合并代码符合规范,并且不会对其他代码造成影响。

除此之外,如果当前内容与source repository内容存在冲突,则需要解决完冲突后才能合并。(需要再本地拉取source repository代码,解决完冲突后重新提交到user repository中,如果之前的merge request没有关闭,则会将当前提交记录更新到刚刚的merge request中,然后就可以合并了。)

  1. 当审阅人员执行合并后,你的提交记录就会被合并到source repository啦。

3.2 更新代码

前面提到我们本地的代码都是直接推到user repository的,而且这个仓库一般仅仅是你自己拥有,所以一般不需要从这个仓库拉取代码(如果需要则使用git pull origin branch).

通常需要拉取的是source repository的内容,包含了其他人员提交的代码内容,拉取方式为:

git pull origin_src master

表示将origin_src仓库(也就是source repository)的master分支拉取到本地的当前分支下。master可以是任意分支名。

之后可以继续在本地开发,或者直接提交到user repository,用于同步source repository的内容。

三、优点

首先是前面提到的在提交merge request之后,有个待合并的状态,可以供他人审查。并且当出现问题时可以关闭当前请求,这是分支开发合并所不具备的。

其次是fork出来的user repository是完全独立的,完全可以在其上开辟新分支、打标签等操作,而不影响source repository,使得source repository更加干净。

3.1 Git的特点: - 分布式版本控制系统:与集中式版本控制系统(如SVN)不同,Git不依赖于中央服务器,每个开发者都可以在本地进行版本控制。 - 快速高效:Git采用了多种优化策略,使得Git能够在处理大量数据时保持高效率。 - 强大的分支管理:Git的分支管理非常出色,支持快速创建、合并、删除分支等操作。 - 安全性高:Git采用了SHA1算法来对文件内容进行哈希,保证了数据的完整性和安全性。 - 可定制性强:Git的各种配置选项和扩展插件可以满足不同开发者的需求。 3.2 Git的基本操作: - 初始化仓库: git init - 添加文件到暂存区: git add <file> - 提交文件到仓库: git commit -m "commit message" - 查看文件状态: git status - 查看提交历史: git log - 撤销工作区的修改: git checkout -- <file> - 撤销暂存区的修改: git reset HEAD <file> - 撤销提交: git reset HEAD^ - 回滚到指定版本: git reset <commit> - 拉取远程仓库代码: git pull - 推送本地代码到远程仓库: git push 3.3 Git的分支管理: - 创建分支: git branch <branch_name> - 切换分支: git checkout <branch_name> - 合并分支: git merge <branch_name> - 删除分支: git branch -d <branch_name> 3.4 Git协同工作: 多人协作开发时,常用的Git协作方式有: - fork+pull request:每个开发者将远程仓库fork到自己的账户下,进行开发后发起pull request请求,由项目负责人进行审核合并。 - 共享仓库+分支管理:多个开发者共同使用一个远程仓库,每个开发者在自己的分支上进行开发,最后由项目负责人进行分支合并。 - GitLab/GitHub等平台:利用Git平台提供的协作工具,多人进行协作开发和版本控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值