git的使用

git常用命令速查表


常用分支命名

主分⽀(master)

主分⽀上包含线上正在运⾏的代码,可以被视为稳定的分⽀,⼀般不允许直接往master分⽀提交代码,

只允许往这个分⽀发起merge request,只允许release分⽀和hotfix分⽀进⾏合流。

体验分⽀(release)

release分⽀从develop分⽀拉取,⽤于回归测试,完成后打tag并合⼊master和develop。

开发分⽀(develop)

开发分⽀是基于主分⽀创建的分⽀,主要⽤户提交我们⽇常开发。

临时分⽀(feature/功能、bugfix/功能)

临时分⽀

是基于develop或者master分⽀创建的,在使⽤完成后可直接delete的分⽀

特性分⽀(feature)

特性分⽀是基于开发分⽀(develop)创建的开发分⽀,主要⽤于完成某个功能模块的开发,开发完成 后再次并⼊develop。

例如开发资讯功能,新建分⽀为: feature/information

修补Bug分⽀ 修补Bug分⽀是基于master创建的临时分⽀,主要⽤于修改线上的Bug,并要及时上 线。bugfix分⽀测试通过后直接并⼊master分⽀。然后develop分⽀同步master分⽀代码,其他 特性分⽀同步develop分⽀代码

通过了解以上内容,对git有一个初步的认识。

至于一些git提交规范其实网上已经有很多了,这里举两个比较常用的:

feat:新功能或功能变更相关

fix:修复bug相关

当然你也可以使用husk来校验git commit 的规范,这里不作重点叙述,请自行官方文档

应用场景及常见问题

S:当正在dev分⽀上开发某个项⽬,这时项⽬中出现⼀个bug,需要紧急修复,但是正在开发的内容只是完成⼀半,还不想提交(假设你的栈中只有一个stash)

A:使用git stash 或 git stash save '暂存说明' 将其暂存至栈中,然后切换分支修复完你的bug之后,再切回你原来的dev分支,使用git stash list查看暂存记录,再使用git stash pop 出栈即可

S:接上若你的栈中不只一个stash,比如有两个,你想应用第二个

A:git stash apply默认是使用第一个存储,即stash@{0},如要使用其他记录使用git stash apply stash@{$num},此场景下应为git stash apply stash@{1}

额外拓展 stash 用法大全

git stash save "save message" 执⾏存储时,添加备注,⽅便查找,只有git stash 也要可以的,但查找时不⽅便识别。

git stash list

查看stash了哪些存储

git stash show

显示做了哪些改动,默认show第⼀个存储,如果要显示其他存贮,后⾯加stash@{$num},⽐如第 ⼆个 git stash show stash@{1}

git stash show -p

显示第⼀个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} - p ,⽐如第⼆个:git stash show stash@{1} -p

git stash apply

应⽤某个存储,但不会把存储从存储列表中删除,默认使⽤第⼀个存储,即stash@{0},如果要使⽤ 其他个,git stash apply stash@{$num} , ⽐如第⼆个:git stash apply stash@{1}

git stash pop

命令恢复之前缓存的⼯作⽬录,将缓存堆栈中的对应stash删除,并将对应修改应⽤到当前的⼯作 ⽬录下,默认为第⼀个stash,即stash@{0},如果要应⽤并删除其他stash,命令:git stash pop stash@{$num} ,⽐如应⽤并删除第⼆个:git stash pop stash@{1}

git stash drop stash@{$num}

丢弃stash@{$num}存储,从列表中删除这个存储

git stash clear

删除所有缓存的stash

S:当你将你的功能分支合并到dev分支时,冲突文件过多,短时间内你又无法处理

A:先使用git log查询你上一次提交的记录的hash值

image.png

使用git reset --hard hash将本地回滚到上次提交的状态。

如果不小心提交了,则使用 git push -f 强推代码覆盖你的上一次push。

S:当你想让git的提交历史记录更加清晰明了如下图

image.png

A:

需要使用变基操作

先将你的代码提交到本地(比如dev分支)git commit -m 'xxx'。

(切换至你要变基的分支(比如master)git checkout master 然后拉取(git pull)master最新代码,最后再切回dev分支进行变基(git rebase master))或 (直接变基到远程master分支(其实就是最新的master)git rebase origin/master),然后git pull,这时候你的dev分支就会是master的最新分支。

之后切回master分支,将dev代码合到master里,整个历史记录就会程线性,不会有交叉的痕迹,并且你新提交的代码是在最前面。

S:接着上面,git pull其实是默认使用git fetch + git merge去合并代码的,为了使记录更清晰,怎么破

A:全局修改git pull即可

git config --global --add pull.rebase true

或你只想在当前项目rebase

git config --local --add pull.rebase true

S:继续,若rebase时候有冲突了,怎么办

A:两个选择合并或放弃

先说合并冲突:

在你解决完冲突后先add冲突文件然后使用 git rebase --continue

这时候会进入vim编辑模式查看你的一些提交啥的,一般这里不需要修改什么,直接输入:wq保存退出即可。

放弃直接执行 git rebase --abort即可

S:我想提交指定文件(比如dev分支的dist下的文件)到指定分支(比如beta分支)

A:在dev分支执行git subtree push --prefix=dist origin beta

preifx='指定的文件夹' '分支名'

S:要基于tag拉取一个分支修复bug

A:

先使用git fetch origin 来获取远程更新

然后使用git branch <newbranch> <tag> 基于tag拉取分支

git checkout newbranch

修复完bug之后git push origin newbranch 提交到远程

S:GitHub拉取速度过慢怎么办

A:git config --local http.proxy 127.0.0.1:'port' IP地址一般是你自己的本地代理

S:拉取项目报错SSL certificate problem: certificate has expired

A:最快的解决方法就是关掉SSL验证,git config --global http.sslVerify false

S:在全局新增或删除一个配置项

A:

新增一项:

git config --local/--global/--system --add section.key value (默认是添加在local配置中)

删除一项:

git config --local/--global/--system --unset section.key

local(本仓库)、global(全局)、system(系统)

也可以手动编辑 git config --local/--global/--system -e/-edit

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • 本文作者陈云峰,转载请注明。 这篇文章记录个人常用的一些命令,和记不住的一些命令,转载了并不断更新。 Git官网 ...
    陳云峰阅读 2,815评论 0 24
  • 一、Git是什么? 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常 大的项目版本管理。 Git ...
    名字谁不会取阅读 1,040评论 0 0
  • git仓库 Remote: 远程主仓库; Repository:本地仓库; Index:暂存区; workspac...
    lesdom阅读 740评论 0 2
  • 转载颜海镜的文章 转自segmentfault 这篇文章记录个人常用的一些命令,和记不住的一些命令。 《GotGi...
    7ack阅读 1,032评论 0 2
  • 一、Git的概念: Git是Linus花了两周的时间用C语言编写的一个版本控制系统,它是目前世界上最先进的分布式版...
    天津的树懒阅读 377评论 0 0