我在工作中使用 git 的几个技巧

sxkk20082年前知识分享175

前言

Git 是每个程序员的必备技能,良好的 Git 提交习惯,不但可以让代码阅读更清晰,还可以提高我们的我们的工作效率,接下来我将分享我在工作中关于 Git 的使用经验,或许对你有帮助。

Git 工作流

  • 主分支: master
  • 开发分支: develop
  • 提测分支: relase 如:relase/V2.0.0

新功能开发,develop 分支检出一个 feature 分支开发(合并后可删除) bug 修复,develop 分支检出一个 hotfix 分支开发(合并后可删除)

提测从 develop 检出一个 relase 分支提测,发布后 relase 分支合并到 master

若前端项目只有一个人负责,可以直接在 develop 开发,使用 Git 工作流规范,可以推进持续集成的统一建设,不会影响产品的持续发布

详情参考 阮一峰 Git 工作流

使用 oh-my-zsh 简化 git 命令

常规提交 git 命令

  • git add .
  • git commit -m 'fix: some fix'
  • git push

使用 oh-my-zsh 插件后

  • gaa
  • gcm "fix:some fix"
  • gp

安装 oh-my-zsh 后默认会打开 git 插件,它会在命令行下光标前显示当前分支名称,还可以实现自动补全,输入 git re 按 tab 会自提示可以选择命令,再按 tab 就可以选择命令,方便命令输入。

这里罗列几个常用的作为示例,展示它们的作用:

快捷键git 命令描述
ggitgit
gpgit push推送
glgit pull拉取
gaagit add --all添加当前项目所有文件修改、增删的文件到缓存区
gc!git commit -v --amend修正上次提交
gcmgit commit -m提交项目到本地库,其中-a表示不用再次输入git add命令
gcbgit checkout -b将特定分支上暂存储区的内容替换当下工作区的内容,
gcmgit checkout $(git_main_branch)切到 main 或者 master
gcdgit checkout $(git_develop_branch)切到 develop
gbDgit branch -D删除分支
glodsgit log --graph --date=short查看提交记录
gmgit merge合并分支
grbgit rebase变基
grhhgit reset --hard重置
gcpgit cherry-pick 从其他分支 选取一次提交
gstagit stash push保存修改为暂存
gstpgit stash pop弹出暂存

完整的简写对照表可以参考github

cherry-pick 代码迁移

工作中有时候会有一些定制功能,会遇到代码迁移的需求,代码在 2 条分支线上,往往不能合并,我们可以按以下 2 步快速迁移。

glods 可以查看提交记录

glods --grep 关键词 搜索提交记录,复制 commit id 后,执行git cherry-pick 可以非常方便地帮助我们实现代码迁移,但是前提是 commit 提交清晰,功能明确。

git cherry-pick 与 git merge 不同的是:

  • cherry-pick 可以迁移单个 commit 迁移,会生成一个新的 commit id

  • merge 必须全部功能合并过去,但不会生成新的 commit id,而是 commit 指针指向新的分支

约定式提交规范

关于提交规范可以遵循《约定式提交规范》

约定式提交的好处:

  • 自动化生成 CHANGELOG。
  • 基于提交的类型,自动决定语义化的版本变更。
  • 向同事、公众与其他利益关系者传达变化的性质。
  • 让人们探索一个更加结构化的提交历史,以便降低对你的项目做出贡献的难度。

我们可以在全局安装 git-cz 这个包

npm i  git-cz@4.5.0 -g

安装后在任意项目中使用 git-cz 代替 git commit,就可以在命令行中进行选择,提交信息会带有 emoji 表情,比较美观。

git rebase 的使用

  1. 可以删除 git 自动生成的 merge commit,优化提交记录

当你执行 git push 的时候,发现远程仓库有修改,git 会提示你先执行 git pull,接着你执行 git pull ,git 会帮你自动合并生成一次提交

Merge branch 'master' of github.com:test/test

此时可以执行 git rebase 或者拉取的时候执行 git pull --rebase,这样我们的 commmit 提交时间就在一条时间线上,比较清晰。

  1. rebase 可以修改合并多个提交,修改提交记录等

一个功能可能需要开发几天,那么需要有好几个提交,为了方便代码迁移,我们可以使用 git rebase -i ,将多个 commit 合并成一个 commit。

在 vscode 中安装了 gitlens 插件就会有可视化的选择界面,如上图,我选择了 squash,中间的 commit 就合并到了上一次 commit 中,当然我们还可以选择 reword 修改 commit 信息,选择 drop 删除 commit 等。

合并的 git 记录是在本地的,需要强制推送到远程,执行gpf 也就是 git push --force

利用 Git reflog 找回丢失的记录

老司机可能警告过你,要避免使用git reset --hard。因为这是一种破坏性的操作。一旦执行,之前的修改全部丢失了,但有时候又避免不了使用 reset,在你执行 reset 之后,却发现,之前的某些提交还是有用的,想再看下之前的代码,这个时候可以使用 git reflog,reflog 中你可以看到所有的变化,我们可以根据 ,检出新分支查看,或者 cherry-pick 找回之前的提交。找回内容的前提是,你的内容做了 commit。若没有提交,git reset 后就丢了。

reflog 是一个本地结构,它记录了 HEAD 和分支引用在过去指向的位置。reflog 信息没法与其他任何人共享,每个人都是自己特有的 reflog。重要的一点是,它不是永久保存的,有一个可配置的过期时间,reflog 中过期的信息会被自动删除。

小结

  • 使用 Git 工作流规范,可以推进持续集成的统一建设,不会影响产品的持续发布
  • 使用 oh-my-zsh 可以简化 git 提交命令
  • 使用 git-cz 可以让我们遵循约定式提交规范
  • 使用 git cherry-pick 可以实现往不能合并的分支迁移代码
  • 使用 git rebase 可以优化提交记录,让提交都在一条时间线上。
  • 利用 git reflog 找回丢失的 commit 记录

以上就是本文全部内容,如果对你有帮助,可以随手点个赞,这对我真的很重要,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

本文正在参加「金石计划 . 瓜分 6 万现金大奖」

相关文章

AI技术助力音乐在线识别:探索新媒体时代的音乐鉴赏之旅

AI技术助力音乐在线识别:探索新媒体时代的音乐鉴赏之旅

  在数字化浪潮的冲击下,音乐作为一种重要的艺术形式,也逐渐发生了巨大的创新。新媒体的兴起为人们提供了更加便捷、多样化的音乐服务,进而催生了诸如音乐在线识别等一系列创新技术。...

百度AI语音合成改变了新媒体传播方式

百度AI语音合成改变了新媒体传播方式

  百度AI语音合成是一项创新的技术,在新媒体领域引起了广泛关注和兴趣。随着技术的不断发展和应用,语音合成正在改变着人们获取信息和传播信息的方式。  传统的文本阅读已经悄然淡...

人工智能的发展趋势及其对未来的影响

人工智能的发展趋势及其对未来的影响

  随着人工智能的发展,我们的社会和生活方式正在发生着翻天覆地的变化。人工智能已经成为各个领域的核心技术,给我们带来了无限的想象空间。本文将从人工智能的发展趋势以及其对未来的...

百度AI开放平台:开启人工智能时代的新篇章

百度AI开放平台:开启人工智能时代的新篇章

  随着科技的不断进步,人工智能技术已经成为当今社会发展的重要驱动力。作为国内领先的科技公司,百度AI开放平台成为了引领人工智能时代的中坚力量。通过为开发者提供强大的人工智能...

地址识别:从历史到未来的智能技术应用

地址识别:从历史到未来的智能技术应用

  地址识别是一项涉及到计算机视觉和人工智能的重要技术,它可以通过对图像或视频进行分析,从中提取出地址信息。随着科技的不断进步和智能化技术的快速发展,地址识别正逐渐成为现实生...

如果你会 TailwindCSS 我推荐 VSCODE 安装 这个插件tailwind-snippets 可以快速帮我们来发出一个常用的代码片段,大家可以在 https://www.tailwindsnippets.ml/snippets 查看效果,快速实现我们的 html 页面

tailwind-snippets 预览

部署

Vercel

Next.js 开发商 Vercel 获得最近 1.5 亿美元 D 轮融资。Vercel 注册什么的我就不讲了,建议使用GitHub 登录, 点击new project创建一个项目,这个项目可以从自己的 GitHub 库导入或者选择 Vercel 给的模板,Vercel 给的模板(下图)首先也会导入进自己的 GitHub 库,总之要先把内容导入进 GitHub 库才行。

Vercel 支持的框架

Vercel 为个人用户提供了

  1. 自动 HTTPS/SSL
  2. 带宽 100 GB
  3. 并发构建,每天 10 万次调用
  4. Serverless Function

所以 Vercel 不光支持静态网站也支持 nodejs 动态网站,如果想要其他后端语言

可以选择 heroku

heroku

Heroku 是一个支持多种编程语言的云平台,并且提供了 Heroku PostgresHeroku RedisApache Kafka on Heroku

Heroku 支持的语言

Heroku 虽然提供了比较全面的编程语言和数据库支持,免费用户还支持

  1. 使用 Git 和 Docker 部署
  2. 自定义二级域名
  3. 容器编排
  4. 自动操作系统补丁

但 heroku 对国内用户支持不是很友好,第一点访问国内速度比不上 Vercel, 第二点 163 和 QQ 邮箱都不能注册,想要注册得要其他邮箱, 第三没有免费的 ssl。第四项目源代码只能有 500M。

数据库选择

MongoDB

选择 https://cloud.mongodb.com/

mongodb 首页截图

创建 database 的时候选择 free;

选择免费截图 地域可以选择日本或者新加坡。

接着创建一个用户 创建一个用户 密码是自动生成的,要把密码拷贝下来

接着要创建一个允许链接的 IP 地址

在 mongodb.com 设置允许链接的IP

如何白嫖一个动态网站

前言我们知道,想要搭建一个网站往往需要一下几个步骤:域名注册服务器购买数据库购买或部署网站设计网站开发网站备案网站上线在国内上线一个网站,域名还必须得备案,光是域名备案的话还的几个星期,整个流程下来,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。