我在工作中使用git的几个技巧
前言
Git是每个程序员的必备技能,良好的Git提交习惯,不但可以让代码阅读更清晰,还可以提高我们的我们的工作效率,接下来我将分享我在工作中关于Git的使用经验,或许对你有帮助。Git工作流主分支:master开发分支:develop提测分支:relase如:relaseV2。0。0
新功能开发,develop分支检出一个feature分支开发(合并后可删除)bug修复,develop分支检出一个hotfix分支开发(合并后可删除)
提测从develop检出一个relase分支提测,发布后relase分支合并到master
若前端项目只有一个人负责,可以直接在develop开发,使用Git工作流规范,可以推进持续集成的统一建设,不会影响产品的持续发布
详情参考阮一峰Git工作流使用ohmyzsh简化git命令
常规提交git命令gitadd。gitcommitmfix:somefixgitpush
使用ohmyzsh插件后gaagcmfix:somefixgp
安装ohmyzsh后默认会打开git插件,它会在命令行下光标前显示当前分支名称,还可以实现自动补全,输入gitre按tab会自提示可以选择命令,再按tab就可以选择命令,方便命令输入。
这里罗列几个常用的作为示例,展示它们的作用:
快捷键
git命令
描述
g
git
git
gp
gitpush
推送
gl
gitpull
拉取
gaa
gitaddall
添加当前项目所有文件修改、增删的文件到缓存区
gc!
gitcommitvamend
修正上次提交
gcm
gitcommitm
提交项目到本地库,其中a表示不用再次输入gitadd命令
gcb
gitcheckoutb
将特定分支上暂存储区的内容替换当下工作区的内容,
gcm
gitcheckout(gitmainbranch)
切到main或者master
gcd
gitcheckout(gitdevelopbranch)
切到develop
gbD
gitbranchD
删除分支
glods
gitloggraphdateshort
查看提交记录
gm
gitmerge
合并分支
grb
gitrebase
变基
grhh
gitresethard
重置
gcp
gitcherrypick
从其他分支选取一次提交
gsta
gitstashpush
保存修改为暂存
gstp
gitstashpop
弹出暂存
完整的简写对照表可以参考githubcherrypick代码迁移
工作中有时候会有一些定制功能,会遇到代码迁移的需求,代码在2条分支线上,往往不能合并,我们可以按以下2步快速迁移。
glods可以查看提交记录
glodsgrep关键词搜索提交记录,复制commitid后,执行gitcherrypick可以非常方便地帮助我们实现代码迁移,但是前提是commit提交清晰,功能明确。
gitcherrypick与gitmerge不同的是:cherrypick可以迁移单个commit迁移,会生成一个新的commitidmerge必须全部功能合并过去,但不会生成新的commitid,而是commit指针指向新的分支约定式提交规范
关于提交规范可以遵循《约定式提交规范》
约定式提交的好处:自动化生成CHANGELOG。基于提交的类型,自动决定语义化的版本变更。向同事、公众与其他利益关系者传达变化的性质。让人们探索一个更加结构化的提交历史,以便降低对你的项目做出贡献的难度。
我们可以在全局安装gitcz这个包npmigitcz4。5。0g复制代码
安装后在任意项目中使用gitcz代替gitcommit,就可以在命令行中进行选择,提交信息会带有emoji表情,比较美观。
gitrebase的使用可以删除git自动生成的mergecommit,优化提交记录
当你执行gitpush的时候,发现远程仓库有修改,git会提示你先执行gitpull,接着你执行gitpull,git会帮你自动合并生成一次提交Mergebranchmasterofgithub。com:testtest复制代码
此时可以执行gitrebase或者拉取的时候执行gitpullrebase,这样我们的commmit提交时间就在一条时间线上,比较清晰。
rebase可以修改合并多个提交,修改提交记录等
一个功能可能需要开发几天,那么需要有好几个提交,为了方便代码迁移,我们可以使用gitrebasei,将多个commit合并成一个commit。
在vscode中安装了gitlens插件就会有可视化的选择界面,如上图,我选择了squash,中间的commit就合并到了上一次commit中,当然我们还可以选择reword修改commit信息,选择drop删除commit等。
合并的git记录是在本地的,需要强制推送到远程,执行gpf也就是gitpushforce利用Gitreflog找回丢失的记录
老司机可能警告过你,要避免使用gitresethard。因为这是一种破坏性的操作。一旦执行,之前的修改全部丢失了,但有时候又避免不了使用reset,在你执行reset之后,却发现,之前的某些提交还是有用的,想再看下之前的代码,这个时候可以使用gitreflog,reflog中你可以看到所有的变化,我们可以根据,检出新分支查看,或者cherrypick找回之前的提交。找回内容的前提是,你的内容做了commit。若没有提交,gitreset后就丢了。
reflog是一个本地结构,它记录了HEAD和分支引用在过去指向的位置。reflog信息没法与其他任何人共享,每个人都是自己特有的reflog。重要的一点是,它不是永久保存的,有一个可配置的过期时间,reflog中过期的信息会被自动删除。小结使用Git工作流规范,可以推进持续集成的统一建设,不会影响产品的持续发布使用ohmyzsh可以简化git提交命令使用gitcz可以让我们遵循约定式提交规范使用gitcherrypick可以实现往不能合并的分支迁移代码使用gitrebase可以优化提交记录,让提交都在一条时间线上。利用gitreflog找回丢失的commit记录
以上就是本文全部内容,如果对你有帮助,可以随手点个赞,这对我真的很重要,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端
转载连接:https:juejin。cnpost7169064565399896078