前言

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 的几个技巧

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

快捷键 git 指令 描绘
g git git
gp git push 推送
gl git pull 拉取
gaa git add --all 增加当前项目所有文件修正、增删的文件到缓存区
gc! git commit -v --amend 修正前次提交
gcm git commit -m 提交项目到本地库,其间-a表示不用再次输入git add指令
gcb git checkout -b 将特定分支上暂存储区的内容替换当下工作区的内容,
gcm git checkout $(git_main_branch) 切到 main 或许 master
gcd git checkout $(git_develop_branch) 切到 develop
gbD git branch -D 删去分支
glods git log --graph --date=short 检查提交记载
gm git merge 兼并分支
grb git rebase 变基
grhh git reset --hard 重置
gcp git cherry-pick <commitId> 从其他分支 选取一次提交
gsta git stash push 保存修正为暂存
gstp git stash pop 弹出暂存

完好的简写对照表能够参阅github

cherry-pick 代码搬迁

工作中有时分会有一些定制功用,会遇到代码搬迁的需求,代码在 2 条分支线上,往往不能兼并,咱们能够按以下 2 步快速搬迁。

glods 能够检查提交记载

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

glods --grep 关键词 查找提交记载,仿制 commit id 后,履行git cherry-pick <commit id> 能够非常便利地协助咱们完成代码搬迁,可是前提是 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 的几个技巧

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 提交时刻就在一条时刻线上,比较明晰。

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

  1. rebase 能够修正兼并多个提交,修正提交记载等

一个功用或许需求开发几天,那么需求有好几个提交,为了便利代码搬迁,咱们能够运用 git rebase -i <commit id>,将多个 commit 兼并成一个 commit。

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

在 vscode 中安装了 gitlens 插件就会有可视化的挑选界面,如上图,我挑选了 squash,中间的 commit 就兼并到了上一次 commit 中,当然咱们还能够挑选 reword 修正 commit 信息,挑选 drop 删去 commit 等。

兼并的 git 记载是在本地的,需求强制推送到长途,履行gpf 也便是 git push --force

利用 Git reflog 找回丢掉的记载

老司机或许正告过你,要避免运用git reset <commit id> --hard。因为这是一种破坏性的操作。一旦履行,之前的修正悉数丢掉了,但有时分又避免不了运用 reset,在你履行 reset 之后,却发现,之前的某些提交还是有用的,想再看下之前的代码,这个时分能够运用 git reflog,reflog 中你能够看到所有的改变,咱们能够根据 <commit id>,检出新分支检查,或许 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万现金大奖」