「Git」常用工作流介绍
作者:轩邈
简介
工作流本质上是项目的流程管理和开发的协同约定。本文旨在通过有效的项目流程管理和高效的开发协同约定,提升减少项目的错误率,提升项目的稳定性,最终提高开发效率。
Git常用工作流介绍
一、工作流
工作流本质上是项目的流程管理和开发的协同约定,有效的项目流程管理和高效的开发协同约定有助于提升减少项目的错误率,提升项目的稳定性,最终提高开发效率,稳定而高效的产出。
本篇主要以示例的方式带大家回顾一下我们在工作中可能使用到的几种常用工作流。
一、Gitflow工作流
Gitflow工作流中开发和发布和开发双分支并行的模式方便我们在发布时流畅过渡,并且提供一个缓冲的空间,方便检查和恢复,这应该也是一些大型项目常用的一种模式。
示例:
1. 创建中央仓库
2. 创建开发分支(为master分配) 管理者:
git branch develop
git push -u origin develop //指定upstream
复制代码
开发者:
git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop
复制代码
3. 开发新功能
git checkout -b xuanmiao develop
touch xuanmiao.file
git status
git add .
git commit -m '新功能开发完成'
复制代码
4. 开发分支整合新功能
git pull origin develop
git checkout develop
git merge xuanmiao
git commit -am'合并xuanmiao分支'
git push
git branch -d xuanmiao
复制代码
5. 推荐使用mc-pr,提高PR效率 github.com/meicai-fe/p…
6. 发布
git checkout -b release-0.1 develop //该分支专门用于清理发布、执行所有测试、更新文档和其它为下个发布做准备操作的地方git checkout master
git merge release-0.1
git push
//Git有提供各种勾子(hook),即仓库有事件发生时触发执行的脚本。可以配置一个勾子,在你push中央仓库的master分支时,自动构建好对外发布。git checkout develop
git merge release-0.1
git commit -am '合并release-0.1分支'
git push* git push origin release-0.1 //如果没有自动发布脚本,可以选择将开发分支推送到仓库,也可删除,有tag备份,不过为了代码的整洁性不推荐。
git branch -d release-0.1
复制代码
7. 打tag
git tag -a 0.1 -m "发布0.1版" master
git push --tags
复制代码
8. 发现bug
git checkout -b issue-#001 master
# Fix the bug
git checkout master
git merge issue-#001
git pushgit checkout develop
git merge issue-#001
git push
git branch -d issue-#001
复制代码
二、Forking工作流
从中Gitflow我们会发现几个问题,比如合并分支时master和开发分支重复操作,管理者和开发者不够分离等。接下来我们看forking工作流。 Forking工作流充分利用了Git中PR、分支管理和多人协作的优势,是非常通用和强大的一种模式。可以应用多种工作场景(也可以用来接受团队外的PR,许多开源项目使用这种模式)。
示例:
1. 仓库管理者创建裸库
git init --bare repo.git //github创建一个仓库就可以了
复制代码
2. 开发者fork
正式仓库
git clone 仓库地址 //origin远程别名指向开发者自己的服务端仓库,而不是正式仓库。
git remote add 正式仓库名 正式仓库地址
复制代码
3. 开发功能
git checkout -b some-feature
// 开发新功能
git commit -a -m "新功能开发完成"
复制代码
4. 开发完成
git push origin feature-branch
复制代码
5. 发起pull request(推荐使用mc-pr)
6. 项目管理者集成开发者的功能
*7. 开发者和正式仓库做同步 *
git pull 正式仓库名 个人仓库名
复制代码
三、其他常用工作命令
1. 重写上次提交历史(commit错误 重新编辑一下提交的comment,修改多个可使用git rebase -i HEAD~n)
方法一:
git commit --amend
复制代码
方法二:
git reset --soft HEAD^ //编辑文件 git commit -a -c ORIG_HEAD
复制代码
2. 删除远程分支
git push origin :分支名
复制代码
3. 删除git仓库中untracked files
git clean -fd
复制代码
4. 克隆指定分支
git clone -b appointBranch 仓库地址
复制代码
*5. 统计每个人的代码行数 *
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
复制代码
stash常用操作
git stash list //查看stash清单 git stash show //查看内容 git stash apply //恢复但不删除stash git stash pop //恢复并删除stash git stash apply stash@{0} //恢复指定stash git stash drop stash@{0} //删除指定stash git config --global alias.stash-unapply '!git stash show -p | git apply -R' git stash-unapply //撤销应用的stash 复制代码
跟踪远程分支
git show-ref master branch --set-upstream-to=refs/remotes/origin/changeTheme changeTheme//本地有该分支 git checkout --track origin/[分支名] //本地没有该分支 复制代码
原文链接: tech.meicai.cn/detail/57, 也可微信搜索小程序「美菜产品技术团队」,干货满满且每周更新,想学习技术的你不要错过哦。
「Git」常用工作流介绍相关推荐
- ks检验与s-w 检验_Python实现「统计学」常用的假设检验
文末扫码领取[Python开源项目包] 上篇文章→:数据分析5大软件「优势PK」:Python.Excel.R.SAS.SPSS你最爱哪个? 作者 | 求知鸟 来源 | 知乎 开门见山. 这篇文章,教 ...
- Git基础(常用命令)介绍
版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统,如rcs:集中化的版本控制系统,如CVS.SVN:分布式版本控制系统,如Git. Gi ...
- 「JavaSE」- 常用类
常用类 Object类 Object是所有类的父类,任何类都默认继承Object.理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Obje ...
- mariadb导入sql数据_「译」关系型数据库介绍
原文来自MariaDB官网的基础知识储备库中关系型数据库的介绍,原文链接:https://mariadb.com/kb/en/library/introduction-to-relational-da ...
- 什么是「数独」,简单介绍
■介绍 每一行,每一列,每一宫,都包含数字"1-9" ■例子 ・开始 ・完成 ■复杂 ---
- 「Git」- git rev-parse returned status code 128 @20210317
问题描述 在 Jenkins 中,当构建开始后发生如下错误: > git rev-parse remotes/origin/test^{commit} # timeout=10 hudson.p ...
- linux mysql软件_「Linux」 - 常用软件安装-MySql
一.TIPS 1.5.6版本使用mysql_install_db安装:5.7版本中被废弃,使用--initialize,进行初始化安装 2.初始化时,使用--initialize-insecure生成 ...
- 「pip」常用pip镜像地址
清华 https://pypi.tuna.tsinghua.edu.cn/simple/ 中科大 https://pypi.mirrors.ustc.edu.cn/simple/ 阿里云 http:/ ...
- bool类型数组转换成一个整数_「PHP」常用的数组键值操作函数,面试重点
数组键值操作函数 1.array_values ( array $array ) : array 返回数组中所有的值的数组 $a=['name'=>'jikeshiguangji','age'= ...
最新文章
- 城市APP集成Firebase/Admob/增强现实带PHP管理后台
- Spark 和 MR 的区别: 多进程与多线程模型
- 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】
- pandas 替换数字列中的字符串
- sending data mysql_MySQL查询中Sending data占用大量时间的问题处理
- 马斯克认怂和解,特斯拉股价大涨17%,市值回涨78亿美元
- BI开发之——ETL注意细节
- tuxedo管理命令之tmadmin
- Mysql触发器与动态完整性
- jdk lambda表达式的坑
- linux 修改git端口号,SSH默认端口更改后使用Git
- Kali 编译 Android 源码
- uni.getUserProfile报错:fail can only be invoked by user TAP gesture
- 这些AI开源项目可以让你创作出卢浮宫级别的艺术品!
- 参赛邀请 | 第二届古汉语自动分析国际评测EvaHan(古汉语机器翻译)开始报名...
- win10 64位系统上注册wincc的ocx插件问题
- Ubuntu12.10 使用JLink连接开发板用arm-gdb调试ARM程序
- 火狐浏览器,错误代码:SEC_ERROR_REUSED_ISSUER_AND_SERIAL
- mysql-mmm的搭建
- 表达式操作方式--3dMax蒙皮技巧