Git实操项目中的奇淫技巧

在公司发现,很多工作很久的同事对git的操作都仅限于 commit、push、merge。结合自己项目中实际遇到的问题,优雅的解决各种代码操作场景问题。

git reset --soft HEAD~1

使用场景:在开发过程中,有时候开发流程突然被打断,需要切换分支去看别的问题,这个时候就随后将本地代码进行了一个临时的commit,然后切换回来的时候,虽然可以继续开发,但是由于之前commit的功能不完整,并且继续开发的时候IDE上面对已经commit的文件没有颜色分别,有时候,改了很多文件,需要自己能够显式的看到自己对这个功能改动的哪些文件,还要继续接着改。那么这个命令会将你最后一个commit 回退到工作区 ,后续开发完成后再进行commit。切记,不建议任何时候使用git reset --hard这个命令。

git commit --amend

使用场景:在开发完成后,在已经完整功能commit的情况下,突然发现还有一个小小的改动,可能就只是一个空格,这个时候,不想单独的去开个commit去提交这个空格,并且这个空格本来就是属于上面那个功能,那么可以使用这个命令,将其追加到上个commit中。

1. git add .
  • add 需要追加的文件,add .是当前工作区所有的文件,可以自己选择性的追加也行。
2. git commit --amend
  • 这一步之后,会有vi框提示可以修改commit信息

git cherry-pick

使用场景:有时候好几个人都在自己的功能分支上开发的时候,需要依赖另外一个人的分支上的某个commit功能,但是这个时候对方的功能并没有完成,也不是自己需要的,只需要他其中某一个commit,自己这边的流程才能继续走下去,这个时候就需要把对方的某个commit给检索到自己的本地分支上面来。

1.git cherry-pick <HashA> <HashB>
  • 这个地方需要找到commit的hash值,可以通过git log查看。可以一次cherry多个commit。如果没有冲突则流程结束。
2. git add .
  • 这一步和rebase冲突一样,加入缓存区。
3. git cherry-pick --continue
  • 继续进行pick,依然有冲突则重复 2、3步骤

git push origin temp:feature/home

使用场景:在本地开发中,一直都在同一个分支上开发。本地分支名字起的不太好,或者本地分支也有对应的远程分支,之前已经有过merge,本地commit有过rebase merge等操作,如果直接push到origin会与远程同名分支产生冲突,导致推不上去,这个时候可以将本地分支推送到远程的时候换一个名字。

1. git push origin temp:feature/home
  • 这个推送的意思是,本地的分支名字叫做temp,代码推送到远程时的分支名字是 feature/home

git rebase

使用场景:在正常我们进行任务开发时候,是不会在master上直接拉分支开发,一般每个迭代会有一个基准分支,假设为dev。 那么我们自己基于dev分支check出自己的开发分支feat后,commit后肯定是需要同步一下我们的dev分支才能发起review的,这个时候很可能就会产生冲突。那么如何解决冲突了?

1. git rebase origin/dev
  • 这里也可以本地切换到dev分支pull后,再进行 git rebase dev,直接拉远程肯定是最新的。这个时候出现了冲突的话,本地先解决冲突。
2. git add .
  • add之后你的本次commit冲突就已经被resolve,由于rebase是按commit一个一个的合并的,所有还需要继续合并
3. git rebase --continue
  • 这一步之后,如果没有冲突那么流程就结束了,如果依然有,则重复2、3步骤,直到结束。

git revert OLDER_COMMIT^..NEWER_COMMIT

使用场景:不知道大家有没有碰到过这种场景,项目临近上线时期,突然发现此功能因某些原因,不得不停止上线,此时,这个功能你有连续十几个commit需要回滚,那么怎么快速回滚了,我们可以通过此命令,回滚你的连续的十个commit,也就是可以区间选择段来回滚

git rebase -i

使用场景:有时候commit记录太多太杂,需要整理commit,譬如合并多个commit,或者删除某个commit

1. git rebase -i HEAD~5
  • 这个代表你需要对最近的五个commit做合并或者删除处理。
rebase.png
2. 如上图 默认都是pick,将pick改为s 则代表将当前合并至上个commit,改为d则代表删除当个commit
squash.png
  • add之后你的本次commit冲突就已经被resolve,由于rebase是按commit一个一个的合并的,所有还需要继续合并
commit.png
  • 修改完commit之后,按wq保存退出

vi使用

  • 在上面这些命令中,很多都需要进入到vi的编辑框进行操作,默认是命令行模式,需要按a或者i来进入输入模式修改,这个时候就可以对里面文字就行修改操作。
  • 修改完后需要按esc 键回到命令行模式,然后按 : 进入到底线命令行模式,这时按wq就可以保存退出了
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容