前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Sourcetree 使用 Git flow

在 Sourcetree 使用 Git flow

作者头像
seth-shi
发布2023-12-18 15:19:50
2060
发布2023-12-18 15:19:50
举报
文章被收录于专栏:seth-shi的专栏seth-shi的专栏

上一个Git flow的流程图

Git flow
Git flow

Git flow

  • 初了解看这个流程图会有一些复杂, 我们直接通过Sourcetree帮助我们理解这个过程

开始使用(图是Sourcetree操作,命令是实际执行的)

新建项目log-service

代码语言:javascript
复制
mkdir log-service
cd log-service
git init
Sourcetree
Sourcetree

Sourcetree

初始化项目配置

  • 比如确定使用什么框架, 项目说明等等
  • 请将以下命令换成你实际要操作的
代码语言:javascript
复制
echo "## log-service" > README.md
git add README.md`
git commit -m "init project"

初始化工作流(git flow init)

  • 图中红色箭头和绿色箭头都可以初始化一个工作流
Sourcetree
Sourcetree

Sourcetree

建立新的功能(git flow feature start show-log)

  • 我们要新建一个功能show-log
  • 这时候是从develop上检出分支
Sourcetree
Sourcetree

Sourcetree

Sourcetree
Sourcetree

Sourcetree

提交代码

  • 下面的代码我们模拟一些操作
代码语言:javascript
复制
echo "collect show log" > show.log
git add show.log
git commit -m "add: show log

完成功能(git flow feature finish show-log)

  • 操作完成之后,我们的show-log分支就被合并到develop分支,然后同时删除show-log分支
Sourcetree
Sourcetree

Sourcetree

Sourcetree
Sourcetree

Sourcetree

Sourcetree
Sourcetree

Sourcetree

模拟多人协同开发冲突

  • 我们增加一个点击日志, 两个人开发click-log-1click-log-2
代码语言:javascript
复制
git flow feature start click-log-1
git flow feature start click-log-2
git checkout feature/click-log-1
echo "click 1 log" > click.log
git add click.log
git commit -m "add: click log"
git checkout feature/click-log-2
echo "                   first  \n click 2 log" > click.log
git add click.log
git commit -m "add: click log"
  • 上面的操作, 都在各自的分支往click.log增加了内容, 我们进行完成功能操作
  • git flow feature finish click-log-1
  • git flow feature finish click-log-2
  • 完成click-log-1正常, 但是完成click-log-2会给我们报代码冲突
  • 因为我们的click-log-2分支的代码也修改了click.log文件
  • 并且功能完成click-log-2之后, 并没有帮我们删除掉这个分支
  • 其实是流程中断了, git flow feature finish实际上执行的是
代码语言:javascript
复制
git checkout develop
git merge feature/<feature_name>
git branch -d feature/<feature_name>
  • 我们按需保留我们需要的代码, 解决好冲突之后提交代码
  • 然后再手动删除click-log-2分支即可
  • git branch -d feature/click-log-2
Git
Git

Git

Sourcetree
Sourcetree

Sourcetree

建立发布版本(git flow release start v1.0.0)

  • 这时候是从develop上检出分支
Sourcetree
Sourcetree

Sourcetree

Sourcetree
Sourcetree

Sourcetree

  • 假如这个时候测试遇到Bug, 是可以直接在release分支修改, 修改完成之后, 直接发布, 会自动合并回developmaster分支
  • 模拟发布的时候遇到一个Bug, 然后处理
  • echo "release v1.0.0" > release.log
  • git add release.log
  • git commit -m "fix: release bug"

完成版本发布(git flow release finish v1.0.0)

  • 上面如果测试没有发现Bug, 或者发现Bug然后修复提交了,
  • 我们发布版本, 可以看到图片中说明会合并到developmaster分支
Sourcetree
Sourcetree

Sourcetree

Sourcetree
Sourcetree

Sourcetree

建立修复补丁(git flow hotfix start click-log)

Sourcetree
Sourcetree

Sourcetree

Sourcetree
Sourcetree

Sourcetree

  • 假如线上的点击日志出了问题, 我们需要紧急修复
  • 之前那种feature的流程太麻烦, 所以引申出修复补丁, 快速解决的办法
  • 这时候是从master上检出分支
  • 开始模拟修复完操作
  • echo "fix click log" >> click.log
  • git add click.log
  • git commit -m "fix: click log"

完成修复补丁(git flow hotfix finish click-log)

  • 代码修改提交完之后, 完成修复, 会自动合并到developmaster分支
Sourcetree
Sourcetree

Sourcetree

注意

关联远程仓库

  • 如果有远程仓库, 实际上除了start, finish还有一个publish操作
  • 实际上publish也是几个命令的流程操作,git glow feature publish <feature_name>
  • 创建一个名为feature/<feature_name>的远程分支。
  • 本地分支track上述远程分支。
  • 如果本地有未push代码,则执行push
  • release publish略有不同, 可查看https://www.git-tower.com

要不要推送到远程

  • 如果这个feature需要多人一同开发, 则需要推送
  • 如果你一个人完成, 不需要推送

合并问题

多人协作的时候,应由仓库(项目)管理员来创建master分支并在本地初始化好GitFlow后一并将master和develop分支推送到远程仓库(master分支默认有写保护,只有创建者才能写入推送,其他协作者只能pull拉取)。其他协作者将项目克隆下来,同样要记得初始化GitFlow,注意配置要保持一致。其他协作者在本地完成feature开发,然后推送到develop分支,由项目管理员来负责发布release分支和发布新版本

参考

Gitflow 使用最强指北 git flow工作流及sourcetree实现 https://www.git-tower.com

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始使用(图是Sourcetree操作,命令是实际执行的)
    • 新建项目log-service
      • 初始化项目配置
        • 初始化工作流(git flow init)
          • 建立新的功能(git flow feature start show-log)
            • 提交代码
              • 完成功能(git flow feature finish show-log)
                • 模拟多人协同开发冲突
                  • 建立发布版本(git flow release start v1.0.0)
                    • 完成版本发布(git flow release finish v1.0.0)
                    • 建立修复补丁(git flow hotfix start click-log)
                    • 完成修复补丁(git flow hotfix finish click-log)
                    • 注意
                      • 关联远程仓库
                        • 要不要推送到远程
                          • 合并问题
                          • 参考
                          相关产品与服务
                          项目管理
                          CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档