范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Git不要只会pull和push,试试这5条提高效率的命令

  前言
  使用 Git 作为代码版本管理,早已是现在开发工程师必备的技能。可大多数工程师还是只会最基本的保存、拉取、推送,遇到一些commit管理的问题就束手无策,或者用一些不优雅的方式解决。
  本文分享我在开发工作中实践过的实用命令。这些都能够大大提高工作效率,还能解决不少疑难场景。下面会介绍命令,列出应用场景,手摸手教学使用,让同学们看完即学会。
  stash
  官方文档
  git 教程描述
  官方解释:当您想记录工作目录和索引的当前状态,但又想返回一个干净的工作目录时,请使用git stash。该命令将保存本地修改,并恢复工作目录以匹配头部提交。
  stash 命令能够将还未 commit 的代码存起来,让你的工作目录变得干净。应用场景
  我猜你心里一定在想:为什么要变干净?
  应用场景:某一天你正在 feature 分支开发新需求,突然产品经理跑过来说线上有bug,必须马上修复。而此时你的功能开发到一半,于是你急忙想切到 master 分支,然后你就会看到以下报错:
  因为当前有文件更改了,需要提交commit保持工作区干净才能切分支。由于情况紧急,你只有急忙 commit 上去,commit 信息也随便写了个"暂存代码",于是该分支提交记录就留了一条黑历史...(真人真事,看过这种提交)命令使用
  如果你学会 stash,就不用那么狼狈了。你只需要:git stash
  就这么简单,代码就被存起来了。
  当你修复完线上问题,切回 feature 分支,想恢复代码也只需要:git stash apply 相关命令# 保存当前未commit的代码 git stash  # 保存当前未commit的代码并添加备注 git stash save "备注的内容"  # 列出stash的所有记录 git stash list  # 删除stash的所有记录 git stash clear  # 应用最近一次的stash git stash apply  # 应用最近一次的stash,随后删除该记录 git stash pop  # 删除最近的一次stash git stash drop
  当有多条 stash,可以指定操作stash,首先使用stash list 列出所有记录:$ git stash list stash@{0}: WIP on ... stash@{1}: WIP on ... stash@{2}: On ...
  应用第二条记录:$ git stash apply stash@{1}
  pop,drop 同理。vscode 集成
  stash 代码
  填写备注内容,也可以不填直接Enter
  在STASHES菜单中可以看到保存的stash
  先点击stash记录旁的小箭头,再点击 apply 或者 pop 都可恢复 stash
  reset --soft
  官方文档
  git 教程描述
  完全不接触索引文件或工作树(但会像所有模式一样,将头部重置为)。这使您的所有更改的文件更改为"要提交的更改"。
  回退你已提交的 commit,并将 commit 的修改内容放回到暂存区。
  一般我们在使用 reset 命令时,git reset --hard 会被提及的比较多,它能让 commit 记录强制回溯到某一个节点。而 git reset --soft 的作用正如其名,--soft (柔软的) 除了回溯节点外,还会保留节点的修改内容。应用场景
  回溯节点,为什么要保留修改内容?
  应用场景1:有时候手滑不小心把不该提交的内容 commit 了,这时想改回来,只能再 commit 一次,又多一条"黑历史"。
  应用场景2:规范些的团队,一般对于 commit 的内容要求职责明确,颗粒度要细,便于后续出现问题排查。本来属于两块不同功能的修改,一起 commit 上去,这种就属于不规范。这次恰好又手滑了,一次性 commit 上去。命令使用
  学会 reset --soft 之后,你只需要:# 恢复最近一次 commit git reset --soft HEAD^
  reset --soft 相当于后悔药,给你重新改过的机会。对于上面的场景,就可以再次修改重新提交,保持干净的 commit 记录。
  以上说的是还未 push 的commit。对于已经 push 的 commit,也可以使用该命令,不过再次 push 时,由于远程分支和本地分支有差异,需要强制推送 git push -f 来覆盖被 reset 的 commit。
  还有一点需要注意,在 reset --soft 指定 commit 号时,会将该 commit 到最近一次 commit 的所有修改内容全部恢复,而不是只针对该 commit。
  举个栗子:
  commit 记录有 c、b、a。
  reset 到 a。git reset --soft 1a900ac29eba73ce817bf959f82ffcb0bfa38f75
  此时的 HEAD 到了 a,而 b、c 的修改内容都回到了暂存区。
  cherry-pick
  官方文档
  git cherry-pick 教程描述
  给定一个或多个现有提交,应用每个提交引入的更改,为每个提交记录一个新的提交。这需要您的工作树清洁(没有从头提交的修改)。
  将已经提交的 commit,复制出新的 commit 应用到分支里应用场景
  commit 都提交了,为什么还要复制新的出来?
  应用场景1:有时候版本的一些优化需求开发到一半,可能其中某一个开发完的需求要临时上,或者某些原因导致待开发的需求卡住了已开发完成的需求上线。这时候就需要把 commit 抽出来,单独处理。
  应用场景2:有时候开发分支中的代码记录被污染了,导致开发分支合到线上分支有问题,这时就需要拉一条干净的开发分支,再从旧的开发分支中,把 commit 复制到新分支。命令使用复制单个
  现在有一条feature分支,commit 记录如下:
  需要把 b 复制到另一个分支,首先把 commitHash 复制下来,然后切到 master 分支。
  当前 master 最新的记录是 a,使用 cherry-pick 把 b 应用到当前分支。
  完成后看下最新的 log,b 已经应用到 master,作为最新的 commit 了。可以看到 commitHash 和之前的不一样,但是提交时间还是保留之前的。复制多个
  以上是单个 commit 的复制,下面再来看看 cherry-pick 多个 commit 要如何操作。一次转移多个提交:git cherry-pick commit1 commit2
  上面的命令将 commit1 和 commit2 两个提交应用到当前分支。多个连续的commit,也可区间复制:git cherry-pick commit1^..commit2
  上面的命令将 commit1 到 commit2 这个区间的 commit 都应用到当前分支(包含commit1、commit2),commit1 是最早的提交。cherry-pick 代码冲突
  在 cherry-pick 多个commit时,可能会遇到代码冲突,这时 cherry-pick 会停下来,让用户决定如何继续操作。下面看看怎么解决这种场景。
  还是 feature 分支,现在需要把 c、d、e 都复制到 master 分支上。先把起点c和终点e的 commitHash 记下来。
  切到 master 分支,使用区间的 cherry-pick。可以看到 c 被成功复制,当进行到 d 时,发现代码冲突,cherry-pick 中断了。这时需要解决代码冲突,重新提交到暂存区。
  然后使用 cherry-pick --continue 让 cherry-pick 继续进行下去。最后 e 也被复制进来,整个流程就完成了。
  以上是完整的流程,但有时候可能需要在代码冲突后,放弃或者退出流程:放弃 cherry-pick:gits cherry-pick --abort
  回到操作前的样子,就像什么都没发生过。退出 cherry-pick:git cherry-pick --quit
  不回到操作前的样子。即保留已经 cherry-pick 成功的 commit,并退出 cherry-pick 流程。revert
  官方文档描述
  给定一个或多个现有提交,恢复相关提交引入的更改,并记录一些这些更改的新提交。这就要求你的工作树是干净的(没有来自头部的修改)。
  将现有的提交还原,恢复提交的内容,并生成一条还原记录。应用场景
  应用场景:有一天测试突然跟你说,你开发上线的功能有问题,需要马上撤回,否则会影响到系统使用。这时可能会想到用 reset 回退,可是你看了看分支上最新的提交还有其他同事的代码,用 reset 会把这部分代码也撤回了。由于情况紧急,又想不到好方法,还是任性的使用 reset,然后再让同事把他的代码合一遍(同事听到想打人),于是你的技术形象在同事眼里一落千丈。命令使用revert 普通提交
  学会 revert 之后,立马就可以拯救这种尴尬的情况。
  现在 master 记录如下:
  git revert 21dcd937fe555f58841b17466a99118deb489212
  revert 掉自己提交的 commit。
  因为 revert 会生成一条新的提交记录,这时会让你编辑提交信息,编辑完后 :wq 保存退出就好了。
  再来看下最新的 log,生成了一条 revert 记录,虽然自己之前的提交记录还是会保留着,但你修改的代码内容已经被撤回了。revert 合并提交
  在 git 的 commit 记录里,还有一种类型是合并提交,想要 revert 合并提交,使用上会有些不一样。
  现在的 master 分支里多了条合并提交。
  使用刚刚同样的 revert 方法,会发现命令行报错了。
  为什么会这样?在官方文档中有解释。
  通常无法 revert 合并,因为您不知道合并的哪一侧应被视为主线。此选项指定主线的父编号(从1开始),并允许 revert 反转相对于指定父编号的更改
  我的理解是因为合并提交是两条分支的交集节点,而 git 不知道需要撤销的哪一条分支,需要添加参数 -m 指定主线分支,保留主线分支的代码,另一条则被撤销。
  -m 后面要跟一个 parent number 标识出"主线",一般使用 1 保留主分支代码。git revert -m 1  revert 合并提交后,再次合并分支会失效
  还是上面的场景,在 master 分支 revert 合并提交后,然后切到 feature 分支修复好 bug,再合并到 master 分支时,会发现之前被 revert 的修改内容没有重新合并进来。
  因为使用 revert 后, feature 分支的 commit 还是会保留在 master 分支的记录中,当你再次合并进去时,git 判断有相同的 commitHash,就忽略了相关 commit 修改的内容。
  这时就需要 revert 掉之前 revert 的合并提交,有点拗口,接下来看操作吧。
  现在 master 的记录是这样的。
  再次使用 revert,之前被 revert 的修改内容就又回来了。reflog
  官方文档描述
  此命令管理重录中记录的信息。
  如果说 reset --soft 是后悔药,那 reflog 就是强力后悔药。它记录了所有的 commit 操作记录,便于错误操作后找回记录。应用场景
  应用场景:某天你眼花,发现自己在其他人分支提交了代码还推到远程分支,这时因为分支只有你的最新提交,就想着使用 reset --hard,结果紧张不小心记错了 commitHash,reset 过头,把同事的 commit 搞没了。没办法,reset --hard 是强制回退的,找不到 commitHash 了,只能让同事从本地分支再推一次(同事瞬间拳头就硬了,怎么又是你)。于是,你的技术形象又一落千丈。命令使用
  分支记录如上,想要 reset 到 b。
  误操作 reset 过头,b 没了,最新的只剩下 a。
  这时用 git reflog 查看历史记录,把错误提交的那次 commitHash 记下。
  再次 reset 回去,就会发现 b 回来了。设置 Git 短命令
  对我这种喜欢敲命令而不用图形化工具的爱好者来说,设置短命令可以很好的提高效率。下面介绍两种设置短命令的方式。
  方式一git config --global alias.ps push
  方式二
  打开全局配置文件vim ~/.gitconfig
  写入内容[alias]          co = checkout         ps = push         pl = pull         mer = merge --no-ff         cp = cherry-pick
  使用# 等同于 git cherry-pick  git cp  总结
  本文主要分享了5个在开发中实用的 Git 命令和设置短命令的方式。stash:存储临时代码。reset --soft:软回溯,回退 commit 的同时保留修改内容。cherry-pick:复制 commit。revert:撤销 commit 的修改内容。reflog:记录了 commit 的历史操作。
  文中列举的应用场景有部分不太恰当,只是想便于同学们理解,最重要的是要理解命令的作用是什么,活学活用才能发挥最大功效。
  如果你也有一些实用的 Git 命令也欢迎在评论区分享~

2022新血压标准公布,不再是12080mmHg,血压或许并不高爱乐养生指南我国心血管疾病正在呈不断上涨趋势,中国高血压患病人群已高达2。45亿人,18岁以上居民高血压患病率高达27。9,而我国高血压和知晓率的治愈率分别为51。6和45。8。高辽宁赢了郭艾伦输了,至少3人抢MVP!27分,1013,哪个都比他强北京时间4月23日,辽宁20领先广厦,但郭艾伦的心态却爆炸了。上一场赛后他直接走人,距离总决赛MVP越来越远。在辽宁再度赢球之后,郭少有可能成为最大的输家,目前来看,有3个队友都比24分准绝杀!NBA帝星19岁追到学姐,两度入选全明星首发NBA季后赛正在火热进行中,此前连赢两场附加赛的老鹰队,以东部第八的身份成功晋级季后赛。首轮他们遭遇了战绩东部第一的热火队,并且在热火队的主场中连输两场。在02落后的局面下,老鹰队总决赛MVP榜单出炉郭艾伦彻底无缘争夺,辽宁付豪弗格希望最大在辽宁男篮以9990击败浙江广厦的比赛里,坐在场边的郭艾伦一脸若有所思,这是他职业生涯,第二次有机会捧起总冠军奖杯,也是他作为辽宁男篮的绝对核心以来,球队整体表现最出色的一个赛季,女人不管差不差钱,夏天都尽量少穿这3双鞋,邋遢显矮掉档次天生爱美的女性对于自己的外在形象穿搭上,那绝对是非常关注且需要不断更新时尚的存在,对于身上的每一款单品的搭配而言,都需要经过十分精细的挑选以将其理想的呈现出来,但大家的眼光千万不要突发!亚特兰大球馆外发现可疑包裹热火老鹰G3被迫推迟开打北京时间4月23日,据亚特兰大记者ZachKlein报道,球馆保安在球场外发现了一个可疑包裹,已经叫来了APD(亚特兰大警察部门)炸弹嗅探犬来检查,安全部门目前已经关闭了球场的一些2600万欧!皇马纪录将诞生!曝39球本泽马威胁走人,老佛爷妥协本泽马在这个赛季的表现是梦幻般的,各项赛事,他打入39球,助攻了13次,是皇马的绝对王牌。但是本泽马对于自己的年薪并不满意,他只拿着950万欧元的薪水,在皇马并非最高。根据西班牙每季后赛首轮出局就意味着下课,这两位主帅要好好考虑该怎么用人了2122赛季NBA季后赛首轮争夺已经进入了关键阶段,对于下面几位主帅来说,季后赛首轮出局也许就意味着下课,他们真的该好好考虑该怎么用人了。总比分暂时02落后,篮网队在季后赛目前的处NBA4月24日季后赛战况一览表北京时间4月24日NBA安排了3场G4和1场G3比赛,76人无缘成为第一支晋级首轮球队,东契奇复出惨遭准绝杀,篮网季后赛未尝一场胜利,森林狼再扳平比分,具体战况总结如下1。76人V歌手李娜出家25年孤单老母曾心痛流泪,现在老人过得怎样?点击关注,每天都有名人故事感动您!李娜李娜是家喻户晓的传奇歌手,演唱了好人一生平安苦篱笆嫂子颂青藏高原女人是老虎山远水远咱爸咱妈等一系列脍炙人口的经典歌曲。她还为160多部影视剧演10位琼瑶女郎近况有人被群嘲,有人嫁豪门,有人被骗钱八九十年代,如果说金庸的武侠剧让人如痴如醉,那么琼瑶的爱情片则把人迷得神魂颠倒。尽管她的艺术成就和口碑都不如表舅金庸,不过几十年来却捧红了大批绝色美女。琼瑶的选美眼光是出了名的严苛
巧用敌人书报,展我武略文才!毛主席领导力思维艺术研究毛泽东年轻时,便胸怀世界,心忧天下,又为了调查研究,所以,酷爱读报。这种习惯,使他了解国内外大事,调查实际,研究问题,较快地接受了马克思主义,成为一位坚定的革命者,并通过读报,帮助他是刘伯承的得力助手,77岁患癌症,79岁做开颅手术,后活到96岁没有人天生会打仗,也没有人天生会领导别人很多事情都是在实践中慢慢摸索出来的。刘忠中将就是从零开始建设我军的侦查部队的,他自己并没有多高的学历,而接到任务也是硬着头皮上。但他每一次的1952年的伦敦大雾霾1952年12月的五天里,伦敦的大雾霾笼罩着这座城市,造成了严重破坏并造成数千人死亡。大雾霾开始1952年12月5日,伦敦的天空刚刚破晓。凛冽的寒流已经笼罩了英国首都数周,当伦敦人国家正在计划修建一座桥梁到月球上去,要多少时间才能完工?你知道嫦娥奔月的故事吗?说的就是美丽民间姑娘嫦娥不顾一切冲向月宫,最后与自己的情人团聚!听说月宫精彩绝伦,漂亮无比,人们都想亲眼看到,这个梦想能实现吗?国家正在计划修建一座桥梁到月原子激光产生类似于光的反射图案当原子激光器遇到障碍物时,从上到下流动时会产生腐蚀性,这是一种折射模式,就像光经常产生的那样。资料来源华盛顿州立大学当冷却到几乎绝对零度时,原子不仅像光一样以波的形式移动,而且还可超级计算机预测的奇异的六夸克粒子一位艺术家对新预测的由两个重子组成的六夸克状态(双重子)的印象。资料来源2021年慕拉诺惠子据理研所的研究人员预测,一种由六种基本粒子(即夸克)组成的奇异粒子的存在,可能会加深我们网曝三星GalaxyS22系列将于年初发布,超大杯改名了年底了,手机行业也都在为来年的新机做宣传了,隔三差五频频爆出某某品牌某某新机的相关信息,最近,有网友爆料,三星明年的旗舰新机GalaxyS22系列将要来了,而其中的超大杯不再采用G2021安卓机皇竞争者vivoX70Pro砍掉了所有短板你有没有想过一个问题怎样的手机才有资格被叫作高端旗舰?可能有消费者会说,价格贵堆料猛上手体验好的手机就是高端旗舰。这个答案算是对一半,高端旗舰由于硬件配置高设计工艺普遍领先,所以自华为Mate50被进一步确认,外观配置都已曝光,这才是华为真正实力华为公司在今年上半年宣布华为P50系列发布会无限延期的时候,不少华为手机粉丝都感觉很可惜,但好在下半年华为P50系列最终顺利发布并开卖了,不过很遗憾华为P50系列旗舰只是4G手机,华为5G新机Mate40EPro入网,搭载麒麟9905G,花粉终于有机可选了随着旗舰处理器骁龙8gen1的发布,整个智能手机领域热闹极了,不是在抢下龙8gen1的首发,就是为新机预热,唯独华为那边轻悄悄的。华为现在的发展受制于芯片,巧妇也难为无米之炊,不过蓝洞新作雷霆一号动如雷霆战术行动(NO)孤胆枪手(YES)硬核写实的画风,爽快的战斗。游戏机迷,每天都好玩!前言直到游戏发售才注意到这个游戏,俯视角的战术射击游戏,看了几个内测视频后才入的,开始以为这是一款类似破门而入战术小队的分工合作战