Git 基本操作复习
你们上家公司使用什么进行代码管理的 ? Git、SVN
你们 Git 工作的流程是怎么工作的 ?
你们在使用 Git 的时候有没有做一些限制,或者有没有一些特殊的注意事项 ?
在公司中不使用 github、码云 对项目进行管理,使用公司自己内部搭建的平台 (gitlab)
要求:以下命令,必须非常熟练,不能只记忆步骤,需要掌握每一条命令的含义是什么
- git init 如果一个项目需要使用 git 进行托管,需要初始化
- git status 查看当前代码的状态 (红色:在开发区,绿色:在暂存区,nothing to commit:开发区没有任何变更)
- git checkout -b develop 创建并切换到 【开发基准分支 develop】
- git checkout -b feature/xxxx 基于 develop 创建功能分支,功能分支建议以 feature/ 开发
- git add . 将代码放到暂存区
- git commit -m 功能名称 将代码从暂存区放到本地仓库
- git checkout 分支名 切换到某一个分支
- git merge feature/xxxx 就是分支合并到另一个分支
- git push 将本地仓库的代码推送到远程
- git pull 将远程主机的最新内容拉下来后直接合并
- git fetch 将远程仓库的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
- git log 查看日志
- git log –oneline 查看简洁版日志(推荐)
- git reset –hard xxx 还原到某一个节点,节点是提交的某个 commit,需要使用 git log 查看
Git 工作流
如果在你的团队中还没有能形成一个特定有效的工作流程,那么使用 git 混乱就将是不可避免的
混乱体现在两个方面
- 分支命名不规范 (login, abc)
- 分支提交的流程混乱 (develop)
Git 工作流,就是定义一套分支合并和操作的规范。有的公司可能会自己定义一套 Git 工作流,公司也有可能会使用第三方的 Git 工作流
GitFlow 工作流
Gitflow 就是一套 Git 操作流程,用来规范化、简化 Git 的操作
注意:是基于 Git
,并不是完全静 Git 命令进行了 替换,而是共存,在项目中既可以使用 GitFlow ,也可以直接使用 Git
Git-flow 并不是要替代 Git,Gitflow 只是将多条 Git 命令使用脚本将进行了合并、组合,从而简化了操作流程
Gitflow 应该怎么安装
Gitflow 不需要安装
,只要电脑上安装了 git ,就能够使用 Gitflow
只需要记住操作的流程并执行 Git-flow 命令,并且附带上正确的参数即可,以及在一个正确的顺序下简单执行那些对应的 Git 命令就可以了
使用 Gitflow:
- 记住操作的流程
- Git-flow 命令以及参数
GItFlow 初始化
如何在项目中使用 Gitflow
-
在项目的根目录下输入:
git flow init
-
输入命令以后,会显示一个交互式的安装助手,直接一路回车就行,全部使用默认的即可
Branch name for production releases :询问我们 项目的主分支名字是什么 ? Branch name for "next release" development: 询问我们 项目的开发基准分支是什么 ? Feature branches :功能分支应该怎么命名 ? feature/xxxx Bugfix branches :Bugfix 分支应该怎么命名 ? bugfix/xxxx Release branches : Release 分支应该怎么命名, release/xxxx, 这个分支可以简历理解为是预发布分支 Hotfix branches : Hotfix 分支应该怎么命名, hotfix/xxx Version tag prefix? : 版本号的规则是什么,1.1.1 复制代码
\
功能分支
-
使用
git flow init
对项目初始化 -
将本地代码提交到本地仓库
git add . git commit -m 初始化 复制代码
-
使用 Gitflow 创建功能分支
git flow feature start xxxx(分支名) 复制代码
-
完成一个功能
git flow feature finish xxxx(分支名) 复制代码
-
这个 feature finish 命令会把我们的工作整合到主 develop 分支中去,同时:
- git-flow 也会进行清理操作。它会删除这个当下已经完成的功能分支
- 自动切换到 develop 分支
如何修改 develop bug
在将代码合并到 develop 以后,出现了 Bug ,需要创建 bugfix 进行 Bug 修复
-
创建 bugfix 分支
- 名字需要和初始化的时候 bugfix 保持一致
- 只有一致,才会基于 develop 创建 bugfix 分支
git flow bugfix start xxx(分支名) 复制代码
-
完成 bugfix 分支
git flow bugfix finish xxx(分支名) 复制代码
-
在将 bugfix 修复后
- 将代码合并到 develop
- 将 bugfix 分支删除
\
发布分支
当 develop 分支满足以下两个条件,那就是时候开始生成一个新的 release 了
- 它包括所有新的功能和必要的修复
- 它已经被彻底的测试过了
只要满足以上两个条件,就可以创建 release 分支
-
创建 release 分支
- 需要注意的是,release 分支是使用版本号命名的
git flow release start 版本号 复制代码
-
结束 release 分支
git flow release finish 版本号 复制代码
-
在结束以后,会出现彩色弹框,需要进行以下处理
- 按 ctrl + c - 输入 : q a - 按回车,通常就会退出 ------------------------------------------- - 如果需要写版本号 - i -- 插入意思,代表能够编辑 - 按 ctrl + c - 既然输入的内容,需要保存并退出 - : w q 复制代码
-
这个命令会完成如下一系列的操作:
- 首先,git-flow 会拉取远程仓库,以确保目前是最新的版本。
- 然后,release 的内容会被合并到 “master” 这个个分支中去,这样不仅产品代码为最新的版本,而且新的功能分支也将基于最新代码。
- 为便于识别和做历史参考,release 提交会被标记上这个 release 的名字
- 清理操作,版本分支会被删除,并且回到 master
- 如果公司的远程仓库,配置了自动化部署方式,用户就能够看到我们最新的功能
hotfix 分支
很多时候,仅仅在几个小时或几天之后,当对 release \ master版本作做全面测试时,可能就会发现一些小错误。在这种情况下,git-flow 提供一个特定的 hotfix 工作流程
-
创建 hotfix 分支
- 这个分支是基于 master 分支的
git flow hotfix start xxx(分支名) 复制代码
-
结束 hotfix 分支
git flow hotfix finish xxx(分支名) 复制代码
-
这个过程非常类似于发布一个 release 版本:
-
完成的改动会被合并到 master 中,同样也会合并到 develop 分支中,这样就可以确保这个错误不会再次出现在下一个 release 中。
-
这个 hotfix 程序将被标记起来以便于参考。
-
这个 hotfix 分支将被删除,然后切换到 “develop” 分支上去。
-
Git 在使用过程中的注意事项
-
不能够在 master 、develop 写任何代码、修改任何 bug,以后开发中,也需要禁止 !!!!!!
-
develop 需要基于 mater 进行创建,如果 develop 代码出现了问题,也是需要基于 mater 重建
-
所有的功能分支,必须基于 develop 进行创建,develop 应该包含所有的功能分支
-
分支与分支之间,禁止相互合并,以后在开发中,可能会涉及到 测试分支、预发布上线分支等等等……
-
如果 develop 代码出现了 bug,禁止在 develop 分支中直接修改,需要创建 bugfix 分支修改
-
release 分支是预发布分支
- 它包括所有新的功能和必要的修复
- 它已经被彻底的测试过了。如果上述两点都满足,那就是时候开始生成一个新的 release 了
-
如果 master、release 代码出现了 bug,禁止在 master、release 分支中直接修改,需要创建 hotfix 分支修改