zoukankan      html  css  js  c++  java
  • 操作失误不要慌,这个命令给你的Git一次反悔的机会

    今天我们来介绍git当中两个非常非常好用的工具,git show和reflog。

    这两个命令虽然不是必知必会,但是如果熟练使用可以极大地帮助我们查看代码仓库的问题,以及在我们操作失误的时候拯救我们。可以理解成应急技能,一般情况下用不到,关键时候会的话可以救命的那种。

    git show

    首先来聊聊git show,它解决了我们日常开发场景当中非常常见的一个问题,就是回看某一个提交的内容。我们通过git log只能阅读到commit的时候输入的提示语。但有些开发者不遵守规范,或者是提示语写得非常简略,我们很难get到其中的内容,还是得需要手动checkout过去查看内容,这就非常的不方便。

    而有了git show工具之后,我们可以直接通过git show命令查看到代码层面的改动

    git show接收一个参数,表示具体的commit id,比如:

    git show 40a91193d
    

    那么git会自动展示出这个commit下所有的改动内容:

    这个大家都很好理解,但是有一个小问题,就是我们怎么知道我们要看的提交的id呢?所以我们需要先查到commit id,才能git show,否则盲目乱show一通也很花时间。

    查找commit id,我们之前介绍过,这里再简单提一下。一般来说有两种参数非常好用,第一种是--stat参数,它可以列举出每一个commit具体到文件级别的改动:

    第二个参数是pretty=oneline,它可以将git的提交记录压缩成一行,方便我们快速查找提交时的备注。

    我们之前介绍过,在git实现的内部,分支其实只是一个指向节点的指针。所以我们也可以用git show + 分支名的方法来查看某一个分支的改动,这样查找出来的改动是这个分支最后一个提交节点的。

    比如:

    git show test
    

    展示的就是test这个分支最后一个提交的改动,如果我们想要查看test分支倒数第二个节点的改动呢?这就需要我们使用祖先引用了。我们之前也介绍过,我们有两种方法可以表示一个节点的祖先。第一种方法是使用^这个符号,它表示某个节点的父节点。这个符号是可以重复引用的,比如我们要选择倒数第三个节点,就可以写成test^^。

    第二种方法就是使用~,它和^的意思是一样,一样表示父节点,但是它可以后面跟一个数字表示嵌套。举个例子,比如test^^它等价于test~2。

    所以比如我们想要查看test分支倒数第三个节点的提交,我们只需要这样就可以了:

    git show test~3
    

    git reflog

    今天我们要介绍的第二个功能叫做reflog,这是一个非常非常有用的功能,很多次救了我的命。

    reflog是reference log的缩写,含义是引用日志,它会记录下HEAD节点和分支引用所指向的历史。我们可以使用git reflog命令来查看引用日志:

    简单解释一下这个展示出来的日志,它最左侧一列表示commit id。它的第二列表示的是分支,也就是这个提交属于哪一个分支。第三列表示的是相对位置,也就是它相对于现在HEAD指针的位置。最后一列是信息,它记录的是HEAD指针移动的情况

    当我们使用reset或者是checkout等命令的时候,都会在这里留下记录。当我们想要反悔了,我们可以通过reflog迅速找到正确的位置。

    这个经常出现,比如我们checkout到了一个过去的节点查看了一些代码,或者是使用了reset了过去的节点。当你查看完了想要回去的时候,你会发现你回不去了。使用git log只会展示再之前的日志,因为git log是以HEAD节点往前输出的。所以这个时候我们就只能查看reflog,找到我们checkout过来的commit id,然后再通过checkout将HEAD指针移动过去。

    也就是说reflog给了你一次后悔的机会,这也是我们之前说的,只要是提交过的代码,一般情况下都不会丢失,因为我们还可以通过reflog进行查找。

    今天的文章就到这里,怎么样,你学会了吗?如果还喜欢今天的内容的话,请来一个三连支持吧~(点赞、关注、转发

    原文链接,求个关注

    本文使用 mdnice 排版

    {{uploading-image-815671.png(uploading...)}}

  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/techflow/p/13962540.html
Copyright © 2011-2022 走看看