Git工作流梳理
2024-08-23 14:08:33 8 举报
AI智能生成
开发者常见git工作流梳理
作者其他创作
大纲/内容
集中式工作流
特点
使用master作为默认的开发分支且所有提交操作都在该分支上。 这种工作流除了master分支外,不需要任何其他分支。
适合场景
集中式工作流通常更适合从 SVN 迁移到 Git 的团队以及规模较小的团队。
流程
拉取代码
git clone ssh://user@host/path/to/repo.git
修改&提交
git status # 查看仓库状态
git add # 暂存
git commit # 提交
git add # 暂存
git commit # 提交
更新&推送
git pull # 更新
git push # 推送
git push # 推送
冲突解决
git pull --rebase origin master # 拉取代码
# 解决冲突之后
git add
# 合并冲突,结合 git add 命令一起用于修复冲突(fix conflicts and then run "git rebase --continue")
git rebase --continue
# 发现问题,撤回冲突解决前
# git rebase --abort # 放弃合并,回到rebase操作之前的状态,之前的提交不会丢弃;
# 解决完重新推送
git push
# 解决冲突之后
git add
# 合并冲突,结合 git add 命令一起用于修复冲突(fix conflicts and then run "git rebase --continue")
git rebase --continue
# 发现问题,撤回冲突解决前
# git rebase --abort # 放弃合并,回到rebase操作之前的状态,之前的提交不会丢弃;
# 解决完重新推送
git push
功能分支工作流
特点
所有功能开发应在专用分支而不是master分支中进行,master分支用于和线上同步,保持稳定。
适合场景
小团队、参与人数少的项目团队、需求迭代频繁且经常调整需求的情况
流程
更新主(master)分支
git checkout master # 切换到 master 分支
git fetch origin # 提取最新的提交
git reset --hard origin/master # 重置仓库的master本地副本
git fetch origin # 提取最新的提交
git reset --hard origin/master # 重置仓库的master本地副本
创建新分支
git checkout -b feat_xxx
更新&提交
git status # 查看状态
git add <some-file> # 暂存文件
git commit # 提交更改
git add <some-file> # 暂存文件
git commit # 提交更改
推送
git push -u origin new-feature
# 完了之后发送合并请求
# 完了之后发送合并请求
冲突解决
同“集中式工作流”冲突解决方案
GitFlow工作流
特点
Gitflow 工作流定义了围绕项目发行版设计的严格分支模型,这为管理较大的项目提供了一个强大的框架。
借助git-flow工具集(brew install git-flow),可以简化操作命令
适合场景
有预定发布周期的(如安卓、IOS开发周期)、较大项目的团队,DevOps持续交付
流程
初始化项目分支(develop和master)
# 在项目中执行初始化
git flow init
# 查看分支结构
git branch
# * develop
# master
git flow init
# 查看分支结构
git branch
# * develop
# master
创建功能分支(基于develop)
# 不使用git-flow 扩展工具方式:
git checkout develop
git checkout -b feature_branch
# 使用git-flow 扩展工具方式:
git flow feature start feature_branch
git checkout develop
git checkout -b feature_branch
# 使用git-flow 扩展工具方式:
git flow feature start feature_branch
功能开发完成(合并到develop)
# 不使用git-flow 扩展工具方式:
git checkout develop
git merge feature_branch
# 使用git-flow 扩展工具方式:
git flow feature finish feature_branch
git checkout develop
git merge feature_branch
# 使用git-flow 扩展工具方式:
git flow feature finish feature_branch
(重复上面两步)多个功能完成合并到develop之后,
基于develop创建一个发行分支(release)
创建此分支将开始下一个发行周期,因此此刻之后不能添加任何新功能,
该分支中仅应包含错误修复、文档生成以及其他面向发行版的任务
基于develop创建一个发行分支(release)
创建此分支将开始下一个发行周期,因此此刻之后不能添加任何新功能,
该分支中仅应包含错误修复、文档生成以及其他面向发行版的任务
# 不使用git-flow 扩展工具方式:
git checkout develop
git checkout -b release/0.1.0
# 使用git-flow 扩展工具方式:
$ git flow release start 0.1.0
Switched to a new branch 'release/0.1.0'
git checkout develop
git checkout -b release/0.1.0
# 使用git-flow 扩展工具方式:
$ git flow release start 0.1.0
Switched to a new branch 'release/0.1.0'
完成发行分支(发布分支将被删除)
# 不使用git-flow 扩展工具方式:
git checkout master
git merge release/0.1.0
# 重新合并到develop分支很重要
git checkout develop
git merge release/0.1.0
git branch -D release/0.1.0
# 使用git-flow 扩展工具方式:
git flow release finish '0.1.0'
git checkout master
git merge release/0.1.0
# 重新合并到develop分支很重要
git checkout develop
git merge release/0.1.0
git branch -D release/0.1.0
# 使用git-flow 扩展工具方式:
git flow release finish '0.1.0'
热修分支hotfix(基于master)
用于快速修补生产版本
用于快速修补生产版本
# 不使用git-flow 扩展工具方式:
git checkout master
git checkout -b hotfix_branch
# 使用git-flow 扩展工具方式:
git flow hotfix start hotfix_branch
git checkout master
git checkout -b hotfix_branch
# 使用git-flow 扩展工具方式:
git flow hotfix start hotfix_branch
完成热修(同样需要合并到master和develop)
# 不使用git-flow 扩展工具方式:
git checkout master
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch
# 使用git-flow 扩展工具方式:
git flow hotfix finish hotfix_branch
git checkout master
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch
# 使用git-flow 扩展工具方式:
git flow hotfix finish hotfix_branch
派生工作流(Forking Workflow)
特点
两个远程仓库:一个主远程仓库(只有读权限)和一个私有远程仓库(派生自主远程仓库)
开发操作在私有仓库中,通过PR的方式更新主远程仓库
派生工作流的主要优点是可以集成贡献,而无需每个人都将其推送到主远程仓库。
适合场景
开源项目、有发布部署管理或严格发布周期的团队
流程
克隆主远程仓库
git clone https://user@bitbucket.org/user/repo.git
添加远程跟踪分支
git remote add upstream https://bitbucket.org/maintainer/repo
# 身份验证
# git remote add upstream https://user@bitbucket.org/maintainer/repo.git
# 身份验证
# git remote add upstream https://user@bitbucket.org/maintainer/repo.git
开发&更新
# 开发过程中及时同步主远程仓库代码
git pull upstream master
# 创建功能分支进行开发
git checkout -b some-feature
git commit -a -m "xxx"
git pull upstream master
# 创建功能分支进行开发
git checkout -b some-feature
git commit -a -m "xxx"
发起合并请求
# 将更新同步到私有远程仓库
git push origin feature-branch
# 然后通过私有远程仓库向主远程仓库发PR
git push origin feature-branch
# 然后通过私有远程仓库向主远程仓库发PR
其他
Github Flow
Gitlab Flow
0 条评论
下一页