前言
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 指令 | 描绘 |
---|---|---|
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
能够检查提交记载
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 rebase 的运用
- 能够删去 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 提交时刻就在一条时刻线上,比较明晰。
- rebase 能够修正兼并多个提交,修正提交记载等
一个功用或许需求开发几天,那么需求有好几个提交,为了便利代码搬迁,咱们能够运用 git rebase -i <commit id>
,将多个 commit 兼并成一个 commit。
在 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万现金大奖」