前言
Git是我们日常编码打交道的最重要的系统之一,可以说一个程序员就离不开Git,目前我们会使用Git的一些常用命令或者是插件工具,但可能会对其中一些命令不太理解或者有些没用过的命令同样能提高我们的效率。下面我们了解下前端人儿需要掌握Git哪些内容~
Git是什么
GIT是一种分布式版本控制系统,主要用于管理和跟踪计算机代码的修改。是我们日常最重要的版本管理工具
Git好处
- 版本控制:Git可以跟踪文件的修改、删除、添加等操作,记录文件的变化历史,并支持回退、比较不同版本等功能。
- 协作开发:Git可以支持多人协作开发,通过将代码库分发给不同的人员进行开发,最后再将各自的修改合并起来,以达到协同开发的目的。
- 分支管理:Git支持创建分支,可以在不影响主分支的情况下开发新功能或修复bug,最终再将分支合并回主分支。
- 提交管理:Git可以管理提交记录,包括作者、时间、修改内容等信息,便于后续查找和修改。
- 远程管理:Git支持远程仓库,可以将代码库上传到远程服务器,便于多地协作开发和备份数据。
Git Flow
Git Flow基本都是用业界通用的流程规范,可能分支命名或者又多一些测试环境/灰度环境/预发布环境等方便测试;
一般流程如下:
- 针对每个需求从master拉取最新代码创建devp/xx分支
- 如果一个需求同时有多个人开发,最好每个人从devp/xx分支拉取属于自己的dev/xx-yy或者叫做feature分支,然后每个人开发自己功能自测没问题 再合并到devp/xx
- 使用devp/xx分支提测合并到测试/灰度/预发布分支进行测试
- 上线时合并到 release分支上线观测没问题,有问题就回滚
- reles分支每天或者每段时间可以自动合并到master,保证master分支最新
常用命令
- git init:初始化一个空的git仓库。
- git add <file>:将文件添加到暂存区。
- git commit -m "<message>":提交代码到版本库并添加提交信息。
- git status:查看当前工作区和暂存区的状态。
- git log:查看版本库的提交历史。
- git diff <file>:查看某个文件的修改内容。
- git branch:列出当前所有的分支。
- git checkout <branch>:切换到指定分支。
- git merge <branch>:将指定分支合并到当前分支。
- git push:将本地代码推送到远程仓库。
- git pull:从远程仓库拉取最新的代码到本地。
- git clone <url>:克隆远程仓库到本地。
- git reset <file>:将文件从暂存区移除,但保留修改。
- git revert <commit>:撤销指定提交的修改。
- git stash:推荐,可用于多个分支开发切换但又不想提交,或者开发一部分发现分支错误,可以使用git stash暂存当前分支修改,切换到其他分支或者继续改动本分支时使用git stash pop恢复之前暂存内容
提交管理
pre commit
为了团队提交信息的一致性以及一些通用图片大小限制或者文件命名规范等。我们可以使用husky包做一些提交前的检查比如限制图片的大小等。还可以限制git message的格式,保证git message的可读性。
git revert 、git reset、git rebase
- git revert: 用于撤销某个提交,撤销操作会创建一个新的提交,该提交的内容是将原提交中的修改反向,保留原提交的记录和历史,同时也不会影响其他人的提交历史。一般我们发现代码写错或者不需要上线时使用revert
- git reset: 用于重置当前分支的状态,可以回退到指定的提交或分支,撤销操作会丢弃指定提交之后的所有提交,可以快速地撤销错误提交可能会影响其他人的提交记录。也可以用于取消暂存的文件
- git rebase: 更多的使用场景是合并多个commit为一个完整commit,让自己提交记录更直观易读。也可以将将某一段commit粘贴到另一个分支上,不用复制粘贴重复代码,这个功能也可以使用git cherry-pick命令
工具、插件
- 工具:SourceTree、TortoiseSvn 两款软件都支持Mac和Windows,之前以SourceTree为主,不过项目多了之后软件会存在闪退或者卡顿情况建议还是直接使用插件
- VS Code插件推荐:
- GitLens:查看分支,代码合并、代码拉取等操作都很方便
- Git Blame: 查看文件的修改记录以及每行修改记录
- GIt Graph: 以git flow可视化的方式查看分支的合并以及拉取分支情况
CICD
在实际的开发中,开发团队可以使用Git作为代码版本控制系统,将代码托管在Git仓库中,并使用CI/CD工具自动化执行各种构建、测试和部署操作。通过持续集成和持续交付的方式,可以及时发现和修复软件问题。后续再专门出一期文章讲解前端CICD流程