• Git 不要只会 pull 和 push,学学这 5 条提高效率的命令(下)


    使用git作为代码版本管理,早已是现在开发者必备的技能,但是大多数的开发者还是只会最基本的保存,拉去,推送,遇到一些commit管理的问题就束手无策,或者用一些不优雅的方式解决。
    下面分享一些在开发工作中实践过的实用命令,这些都能够大大提交工作效率,还能解决不少疑难场景。
    revert
    描述:
    给定一个或多个现有提交,恢复相关提交引入的更改,并记录一些这些更改的新提交,这就要求你的工作树是干净的(没有来自头部的修改)。
    将现有的提交还原,恢复提交的内容,并生成一条还原记录。
    应用场景:
    应用场景:有一天测试突然跟你说,你开发上线的功能有问题,需要马上撤回,否则会影响到系统使用,这时可能会想到用reset回退,可是你看了看分支上最新的提交还要其它同事的代码,用reset会把这部分代码也撤回了,由于情况紧急,又想不到好方法,还是人性的使用reset,然后再让同事把他的代码合一遍(同事听到想打人),于是你的技术形象在同事眼里一落千丈。
    命令使用:
    revert普通提交
    学会revert之后,立马就可以拯救这种尴尬的情况
    现在master记录如下:
    在这里插入图片描述
    在这里插入图片描述

    revert掉自己提交的commit.
    在这里插入图片描述

    因为revert会生成一条新的提交记录,这时会让你编辑提交信息,编辑完后:wq保存退出就好了。
    在这里插入图片描述

    再来看下最新的log,生成一条revert记录,虽然自己之前的提交记录还会保留着,但你修改的代码已经被撤回了。
    revert合并提交
    在git的commit记录里,还有一种类型是合并提交,想要revert合并提交,使用上会有些不一样。
    在这里插入图片描述

    现在的master分支里多了条合并提交。
    在这里插入图片描述

    使用刚刚同样的revert方法,会发现命令行报错了。
    为什么会这样,在官方文档中有接受:
    通常无法revert合并,因为您不知道合并的哪一侧应被视为主线,此选项指定的父编号(从1开始),并允许revert反转相对于指定父编号的更改
    我的理解是因为合并提交是两条分支的交集节点,而git不知道需要撤销的哪一条分支,需要添加参数-m指定主线分支,保留主线分支的代码,另一条则被撤销。
    在这里插入图片描述

    revert合并提交后,再次合并分支会失效
    还是上面的场景,在master分支revert合并提交后,然后切到v2.0分支修复好bug,再合并到master分支时,会发现之前被revert的修改内容没有重新合并进来。
    因为使用revert后,v2.0分支的commit还是会保留再master分支的记录中,当你再次合并进去时,git判断有相同的commitHash,就忽略了相关的commit需改内容。
    在这里插入图片描述

    现在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短命令
    对于我这种喜欢桥命令行而不用图形化工具的爱好者来说,设置短命令可以很好的提高效率,下面介绍两种设置短命令的方式。
    方式一:
    在这里插入图片描述

    方式二:
    打开全局配置文件
    在这里插入图片描述

    写入内容
    在这里插入图片描述

    使用
    在这里插入图片描述
    源码附件已经打包好上传到百度云了,大家自行下载即可~

    链接: https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27
    提取码: yu27
    百度云链接不稳定,随时可能会失效,大家抓紧保存哈。

    如果百度云链接失效了的话,请留言告诉我,我看到后会及时更新~

    开源地址

    码云地址:
    http://github.crmeb.net/u/defu

    Github 地址:
    http://github.crmeb.net/u/defu

  • 相关阅读:
    360度绩效评估中的6个关键点,尤其是第4个!
    MySQL高级_索引的数据结构
    i.MX 6ULL 驱动开发 二十四:多点触摸屏
    在Android studio 创建Flutter项目运行出现问题总结
    物联网,智慧城市的数字化转型引擎
    echarts 仪表盘统计图
    65.【警告 阅读前请喝水,挺干的。让你认清指针数组和数组指针 (超详版)】
    Nginx listen 监听端口详解
    Vite3搭建Vue3项目
    Apache Airflow (九) :Airflow Operators及案例之BashOperator及调度Shell命令及脚本
  • 原文地址:https://blog.csdn.net/qq_39221436/article/details/126101061