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