「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」
高效使用git工具
目录:
- Git的一些使用过程常见问题
- Git分支命名规范推荐
- Git多人开发分支管理
- Git记录提交规范
- 推荐Git的图形化界面SourceTree及使用方法
一:Git的一些使用过程常见问题
1、.gitignore的配置规则,允许使用正则
.gitignore 文件可以让git提交的时候,过滤一些不需要提交的文件或文件夹,比如代理配置文件、打包的文件、依赖安装包、编辑器的配置等。具体的过滤规则有:
- /build/ 不提交整个文件夹
- *.zip 过滤所有.zip文件
- /docs/do.txt 过滤某个具体文件
- !src/ 不过滤该文件夹
具体语法:
- 以斜杠/开头表示目录;
- 以星号*通配多个字符;
- 以问号?通配单个字符
- 以方括号[]包含单个字符的匹配列表;
- 以叹号!表示不忽略(跟踪)匹配到的文件或目录;
从上到下执行,下面的命令会覆盖前面的
2、当前分支功能开发一半,需要终止修复线上bug,怎么弄
通过 git stash 指令,保存临时修改的代码到本地,该操作将清空工作区,然后切换分支去处理bug,完成后切回原来的分支,通过 git stash 指令还原之前的修改,而不是直接提交写一半的代码到暂存区
二:Git分支命名规范推荐
常规分支命名
首先,项目创建完成后会默认master分支(现在Github改成了main分支),作为生产环境的分支,特别重要的项目,这里可以设置为受保护的分支,只允许管理员操作,这样就能避免代码混乱,当然90%的代码估计都不太需要。
######(1)稳定分支
- master/main分支:生产环境代码,记录每个版本迭代,保持分支稳定,不能直接修改。
- test分支:转测版本分支,记录每个转测版本迭代,保持分支稳定,不能直接修改。
- develop分支:开发分支,开发功能需要从当前分支检出,保持稳定,最新版本。
######(2)不稳定分支
- 不稳定分支指的是更新频繁,并且有一定的生命周期。
- release分支:预发布分支,当完成一个功能可以创建该分支用于测试,比如release/login release/account
- feature分支:功能分支,当需要开发一个功能时,可以创建该分支,开发上线后删除。feature/login feature/register
- hotfix分支:生命周期最短,发现bug后临时建立,修复bug后删除。分支命名:hotfix/login hotfix/register
master 和 develop 分支作为稳定分支不变,其他的分支命名格式:名字前缀/分支名称
- 张三要开发登陆功能:zs/feature-login
- 张三要修获取用户信息bug:zs/bugfix-userinfo
- 李四要开发注册功能:ls/feature-register
三:Git多人开发分支管理
例如:当需要开发新功能登陆页面的时候
- 从master分支检出feature/login,经过一段时间开发完毕
- 需要发布版本测试,此时从test合并feature/login,如果develop版本也修改了一些基础问题,也需要将develop分支合并到test分支,部署该测试环境分支代码,进行测试
- 测试中的bug,在feature/login修复,然后合并test分支,提交第二个测试版本,第三个测试版本等
- 测试通过后, 确认没问题,合并release/login到master分支,如果develop版本也修改了一些基础问题,也需要将develop分支合并到master分支,部署上线
- 删除feature/login分支,develop合并master分支最新代码,保持最新版本
切记:
- dev分支主要是用于开发日常版本的问题的修复工作,不需要去合并其他分支代码
- 开发过程中,不需要把代码合并到dev分支,避免分支之间污染,导致需要回滚时无法回滚
- 不管是一期还是二期内容,上线之后都删除该分支,重新从master检出新的开发分支
- 上线完成之后,dev分支需要合并master分支
四:Git记录提交规范
Subject 一句话概述commit主题(必须)
<Body> 详细描述 What 和 Why (可选)
<Footer>不兼容或关闭 issue 等说明(可选)
主题(Subject)是 commit 的简短描述,不超过50个字符
- 用一句话说明本次所作的提交, 如果一句话说不清楚,那有可能这个提交得拆分成多次
- 主要采用 Verb + Object + Adverb 的形式描述,常见动词及示例如下
1. Add: 添加代码和逻辑, 如 Add xxx field/method/class
2. Change: 代码更新,如 Change xxx to yyy with reason
3. Remove: 删除旧特性/功能,如 Remove xxx which was deprecated
4. Fix: 修复bug,如 Fix #123, fix xxx error
5. Update/Release: maven 版本变更, Update/Release xxx version to 1.0.0
6. Refactor: 代码重构, 如rename, move, extract, inline等
7. Polishing: 代码打磨(代码格式化,不涉及逻辑调整,使代码更清晰易读等无错修改)
正文(Body)详细描述本次 commit 做了什么、为什么这样做(不是怎么做的)
- 每行不要超过70字符
1. 这个改动解决了什么问题?
2. 这个改动为什么是必要的?
3. 会影响到哪些其他的代码?
bug fix - 组件 bug 修复;
breaking change - 不兼容的改动;
new feature - 新功能
尾注(Footer) 用于关闭 Issue 或存在不兼容时添加相关说明等
1. breaking change: 与上一个版本不兼容的相关描述、理由及迁移办法
2. close #issue: 关闭相关问题(附链接)
3. revert: 撤销以前的commit
五. 推荐Git的图形化界面SourceTree及使用方法
建议统一使用相同工具
一、安装
下载地址:SourceTree
二、配置用户信息
- 1、配置用户名和电子邮件地址,作为后面提交代码的信息展示
- 2、SSH客户端配置
首先需要本机安装Git,并生成key,具体生成方式和服务器命令行一样。
####### 生成key的方法这里有两种,不同系统有差别,都可以使用Git bash操作
- 1、通过Git命令行生成,具体过程可以参考章节Git生成sshkey
- 2、通过SourceTree,ssh助手生成key
通常Windows的key都在User\user.ssh\id_rsa下,选择协议使用OpenSSH
Linux电脑的key一般存在root/.ssh 目录,其中一个公钥一个私钥。
Mac的key一般存在/home/.ssh目录
三、创建或引入一个项目
- 1、添加已经存在的本地仓库,将本地的Git仓库用SourceTree管理起来
- 2、创建远程仓库,SourceTree 帮助你直接创建远程仓库
- 3、从URL克隆,相当于git clone,只要有项目地址就可以将项目clone到本地
- 4、添加本地已经存在的本地仓库,如果你本地有个git项目,那么你可以直接引入
- 5、创建本地仓库,选择一个不是仓库的文件夹,创建一个git仓库,相当于git init
- 6、这样我们就可以通过SourceTree使用git命令操作项目了。
- 7、引入成功后,是这个样子
四、工作区域说明
SourceTree 整个界面分成了多个区域
第一个工作区,最上面的部分,主要是Git的常用操作,包括
- 提交(git add)
- 拉取(git pull)
- 推送(git push)
- 获取(git fetch)
- 分支(git branch、git checkout、git push -d branch)
- 合并(git merge)
- 贮藏(git stash)
- Git工作流,主要是自动创建不同的分支流程,帮助多人合作开发管理分支,类似我们章节分支管理中的内容
- 远端:点击展示当前项目远程仓库信息,提供git remote -v 和修改删除的功能
- 命令行模式,window下快速打开bash命令行
- 资源管理器,一键打开项目所在的文件夹目录
- 设置远程仓库配置和Git配置信息设置
这个区域有个很厉害的地方,只要线上代码更新,就会提示你当前版本落后的版本数,提醒你及时拉取代码,而不用每次都去使用命令拉取一下。
第二个工作区(WORKSPACE 工作区信息)
文件状态,主要展示当前项目你追踪的修改、删除的文件或未追踪,新建的文件,对应的命令git status 历史, 暂存文件提交的历史和说明,分支合并的路径等信息 对应的命令 git log, git grash 搜索 提供了对git log的封装
第三个工作区
分支:使用的命令包括 git branch -a,可以很直观的看到当前创建的分支 标签:展示所有的标签内容 远程分支:远程仓库所有的分支 贮藏区:相当于git stash,保存在本地的临时代码
第四个区域
主要配置,根据各个Tab切换展示不同的内容,筛选日志数据,文件状态分区,清晰的展示了各分支之间的关系和来龙去脉 同时对于修改的内容也会实时获取,这个就很方便了,比如你改动了一些代码,不需要在打开Gitlab网页,直接就能在这里看到。
出现冲突的界面
合并冲突会直接显示黄色感叹号。
第五工作区
上面主要展示了,git logs commit-id和两个版本之间的修改内容
第六个工作区
主要展示某个commit-id修改内容的差异 如上图,右边还可以通过回滚区块,来操作小块代码的回滚,非常方便