前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【Git】:基础协作篇

【Git】:基础协作篇

作者头像
WEBJ2EE
发布2020-10-26 15:08:10
发布2020-10-26 15:08:10
46800
代码可运行
举报
文章被收录于专栏:WebJ2EEWebJ2EE
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
复制
目录
1. 常见的 Git 协作模型
    1.1. “共同维护”模型
    1.2. “并列仓库”模型
    1.3. “分散贡献者”模型
2. 协作示例    
    2.1. 环境
    2.2. 克隆仓库
    2.3. 开发人员任务开发
    2.4. 开发人员任务推送到远程仓库
    2.5. 审核人员代码复读
    2.6. 审核人员代码合并、同步官方仓库

尽管在使用 Git 时,人们经常提到在没有网络的飞机上编写代码这个例子,我认为 Git 真正的优点在于你可以私下里更多地尝试你的想法。你可以创建新的分支,思考代码中的新想法,并且在自己准备好了之后再连接其他仓库。 《Git 团队协作》

1. 常见的 Git 协作模型

1.1. “共同维护”模型

  • 每个人都拥有对该仓库的共享写入权限。
  • 这个模型通常假设:代码在提交至主项目分支之前已经经过检查和确认 —— 即开发者是受信任的。

架构图:

时序图:

1.2. “并列仓库”模型

  • GitHub 中的开源项目,基本都是这种模型。

1.3. “分散贡献者”模型

2. 协作示例

2.1. 环境

  • 官方仓库:awesome-repo
    • 仓库地址:https://github.com/webj2eedev/awesome-repo.git
    • 主分支:main
  • 审核员:admin
    • admin
    • admin@qq.com
  • 开发人员:张三
    • zhangsan
    • zhangsan@qq.com
  • 开发人员:李四
    • lisi
    • lisi@qq.com
  • 开发任务:iss53
    • 开发者:张三
  • 开发任务:iss54
    • 开发者:李四

2.2. 克隆仓库

审核员:

代码语言:javascript
代码运行次数:0
复制
git clone https://github.com/webj2eedev/awesome-repo.git
cd awesome-repo/
git config user.name "admin"
git config user.email "admin@qq.com"

张三:

代码语言:javascript
代码运行次数:0
复制
git clone https://github.com/webj2eedev/awesome-repo.git
cd awesome-repo/
git config user.name "zhangsan"
git config user.email "zhangsan@qq.com"

李四:

代码语言:javascript
代码运行次数:0
复制
git clone https://github.com/webj2eedev/awesome-repo.git
cd awesome-repo/
git config user.name "lisi"
git config user.email "lisi@qq.com"

当前 Git 状态

2.3. 开发人员任务开发

张三:开发 iss53 任务

李四:开发 iss54 任务

当前 Git 状态

2.4. 开发人员任务推送到远程仓库

张三:推送 iss53 任务到远程仓库

代码语言:javascript
代码运行次数:0
复制
git push -u origin iss53

李四:推送 iss54 任务

代码语言:javascript
代码运行次数:0
复制
git push -u origin iss54

当前 Git 状态

2.5. 审核人员代码复读

拉取代码:

代码语言:javascript
代码运行次数:0
复制
git fetch origin

查看差异:

代码语言:javascript
代码运行次数:0
复制
git diff main..origin/iss53
git diff main..origin/iss54

当前 Git 状态

2.6. 审核人员代码合并、同步官方仓库

先看一眼“审核员”角度的 Git 状态

为了保持“主干”有一个线性、清晰的历史,审核人员将采用“变基”的方式合并代码。

代码语言:javascript
代码运行次数:0
复制
// 合并 iss53
git checkout -b iss53 origin/iss53
git rebase main
git checkout main
git merge iss53
git branch -d iss53

// 合并 iss54
git checkout -b iss54 origin/iss54
git rebase main
git checkout main
git merge iss54
git branch -D iss54

// 推送
git push origin

// 清理工作
git push origin --delete iss53
git push origin --delete iss54

再先看一眼“审核员”角度的 Git 状态

历史清晰、干净

任务完成

参考资料:

《精通 Git 第二版》 https://git-scm.com/book/en/v2 《Git 团队协作》


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档