Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Git Feature Branch Workflow

Git Feature Branch Workflow

作者头像
mazhen
发布于 2023-11-24 06:06:00
发布于 2023-11-24 06:06:00
18700
代码可运行
举报
文章被收录于专栏:mazhen.techmazhen.tech
运行总次数:0
代码可运行

Zion项目我们采用Feature Branch Workflow,即每个特性在branch中开发,master始终保持稳定。特性开发完成,需提交pull request,接受其他成员的code review,同时可以在PR中围绕该特性进行讨论,PR记录了开发过程的细节。

由于是内部项目,我们没有使用fork机制,代码都维护在Github上的一个仓库:apusic/zion。在看具体的流程前,先有一个全局视图:

基本工作流程

  • 从远程clone respository
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/apusic/zion.git

  • 创建特性分支

首先让本地的master处于最新状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git fetch
git checkout master
git rebase origin/master

创建分支

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git checkout -b myfeature

  • 在分支上进行开发
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git status # View the state of the repo
git add # Stage a file
git commit # Commit a file

进行一个功能特性开发时,可以多次提交到本地仓库Repository,不必每次commit都push到远程仓库Remote

  • 开发过程中,保持分支和最新代码同步
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# While on your myfeature branch.
git fetch
git rebase origin/master

关于rebase的详细说明,请参考 The “Git Branching - Rebasing” chapter from the Pro Git book.

后面会单独介绍rebase冲突的处理。

  • 将分支发布到中心仓库

所有改动都提交后,执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push -f origin myfeature

  • 创建pull request

访问项目主页,点击Compare & pull request创建pull request

  • code review & discussions

可以要求一个或两个项目成员进行review,也可以围绕该特性进行讨论。

  • Merge pull requests

根据项目的配置,pull requests在merge进master之前要满足一些条件,例如至少两个成员review,通过集成测试等。

所有的检查都通过后,这个pull request就可以merge了。详细的操作参见 Merging a pull request

这里有三个merge选型:Merge pull requestSquash and mergeRebase and merge,关于它们的区别请参考GitHub的帮助。 一般建议选择Squash and merge

至此,一个特性就开发完成了。

  • 删除分支

已经完成merged的 pull requests 关联的分支可以在GitHub删除,详细的操作步骤参见GitHub文档 Deleting and restoring branches in a pull request

冲突处理

上面的流程中,在保持分支和最新代码同步时,最有可能产生冲突。

rebase提示冲突,会列出冲突文件,执行下列步骤:

  • 手工解决冲突
  • git add <some-file> 将发生冲突的文件放回index
  • git rebase --continue 继续进行rebase
  • 提示rebase成功

Merge pull requests过程中也可能产生冲突,可以在GitHub的界面上解决冲突,详细的操作轻参考Addressing merge conflicts

如果冲突较多,建议先在客户端执行rebase,按照上面的步骤解决完冲突,再进行Merge pull requests

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Git的简单用法
git 2005年诞生,是一种分布式版本控制工具。最初是Linus Torvalds为了管理Linux 内核开源项目而开发的。
一只大鸽子
2022/12/06
4370
Git的简单用法
Git 使用规范流程
首先,每次开发新功能,都应该新建一个单独的分支(这方面可以参考《Git分支管理策略》)。
小小杨
2021/10/13
1.2K0
git 使用流程规范(merge-request)
git 使用流程规范(merge-request) 如果你的git workflow 采用此模式,谨记一定要忘记 git merge,除了在 master 分支上 git pull 可以使用 git pull,其他分支如果要 git pull应该使用 git pull --rebase 使用 git rebase 的黄金法则就是:分支的开发者尽量是一个人,重写提交历史不会影响别人 新建分支 # 创建分之前,先切换到 master 分支,更新到最新版本,确保你的新分支是基于最新版本的master # 在
luxixing
2019/05/28
9.8K1
Git秘籍: Git and Git Flow Cheat Sheet
注意:git remote rm 不会从服务器上删除远程仓库。它只是从本地仓库中删除远程文件及其引用。
MoyiTech
2023/02/27
1.8K0
Git秘籍: Git and Git Flow Cheat Sheet
【Git】Git 完全指南:从入门到精通
Git 是现代软件开发中最重要的版本控制工具之一,它帮助开发者高效地管理项目,支持分布式协作和版本控制。无论是个人项目还是团队开发,Git 都能提供强大的功能来跟踪、管理代码变更,并保障项目的稳定性与可持续发展。本篇文章从基础命令讲起,逐步深入,帮助你全面了解并掌握 Git,最终达到精通。
LuckiBit
2024/12/11
5.4K0
【Git】Git 完全指南:从入门到精通
【git重案组】如何逃避git blame的追踪?
导语:程序员的血腥复仇——论如何偷偷修改代码而不被别人发现... 背景介绍 上周笔者在工作中发现git仓库出现了一个奇怪的问题,master分支中某文件的一次commit丢失掉了,但diff中没有任何记录,这让笔者一度怀疑是git或者code平台自己出了问题。 在code平台一条条比对后发现变动发生在feature分支merge master分支之后。 原本SHA为8950d的edit.vue 文件最近一次修改是在一周前。 在merge之后该文件回滚到了两周前。 通过查询该文件的comm
腾讯技术工程官方号
2019/09/10
1.3K0
【git重案组】如何逃避git blame的追踪?
GIT常用指令
注:并不是修改上一次commit,而是生成新的commit取代上一次commit。
Careteen
2022/02/14
4440
GIT常用指令
Git 使用规范流程
团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。 下面是ThoughtBot 的Git使用规范流程。我从中
ruanyf
2018/04/13
9760
Git 使用规范流程
Git 实战
完整的把远程库克隆到本地 克隆下来后不要在主分支里面做开发 clone进行一次,从无到有的过程,更新用pull
用户1212940
2020/03/18
6430
git的操作说明超详细
个人在学习Git工作流的过程中,从原有的 SVN 模式很难完全理解Git的协作模式,直到有一天我看到了下面的文章,好多遗留在心中的困惑迎刃而解:
双面人
2019/05/22
1.7K0
git的操作说明超详细
Git 帮助手册
国外网友制作了一张 Git Cheat Sheet,总结很精炼,各位不妨收藏一下。
硬件开源小站
2023/04/07
4.5K1
Git 帮助手册
一杯茶的时间,上手 Git 团队协作开发
本文总结了图雀团队协作开发的流程与规范,仅供参考。最优的解决方案还是需要结合团队的实际情况,具体问题具体分析。
一只图雀
2020/05/07
1.1K0
Git的正确使用姿势与最佳实践|青训营笔记
课程链接:https://live.juejin.cn/4354/yc_Git-posture
白泽z
2022/08/18
7020
Git的正确使用姿势与最佳实践|青训营笔记
高频使用的 Git 命令
在整个功能开发完毕的时侯,会有非常多的 commit,用 rebase 可以让我们的commit记录很干净
CRPER
2019/12/10
7270
Git 实用指南
Git 是一个分布式的版本控制工具,因此远程和本地可以视为两个独立的 Git 仓库。上图是一张经典的 Git 中的数据流与存储级别的介绍,其中储存级别主要包含几部分:
grain先森
2019/05/06
6770
Git 实用指南
Git 从入门到精通,这篇包教包会!
集中化的版本控制系统,诸如 CVS,Subversion 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
java思维导图
2020/03/03
2.8K0
Git 的基本操作、开发流程、实用技巧总结
serena
2017/09/05
3K0
Git 的基本操作、开发流程、实用技巧总结
日常开发过程中实际场景下使用git的一些简单总结
公司内部有代码仓库和 github 仓库邮箱不一致。例如已经全局配置了公司内的信息
ACK
2020/05/26
4910
Git workflow 详谈
作为一名工程师, Git 在日常开发中是不可或缺的工具。 这里详细介绍几种比较常用的基于 Git 的工作流模型, 以便于团队协作的规范化和效率提升。
Jintao Zhang
2018/08/27
6220
Git | 5年程序员生涯,使用的最频繁的Git 命令总结
在整个功能开发完毕的时侯,会有非常多的 commit,用 rebase 可以让我们的commit记录很干净
咸鱼学Python
2020/03/26
6630
相关推荐
Git的简单用法
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验