zoukankan      html  css  js  c++  java
  • git-版本回退

    继续修改readme.txt文件:

    git is a distributed version control system.
    git is free software distributed under the GPL.

    然后提交:

     zhangkai@bogon � ~/git_zk/learngit � � master � vim readme.txt 
     zhangkai@bogon � ~/git_zk/learngit � � master ● � git add readme.txt 
     zhangkai@bogon � ~/git_zk/learngit � � master ✚ � git commit -m "add GPL"
    [master b2ba41f] add GPL
     1 file changed, 1 insertion(+), 1 deletion(-)
     zhangkai@bogon � ~/git_zk/learngit � � master � 

    然后看一下我们的历史记录git log:

    commit b2ba41f1f8758e77da8b08c685a587227de36fa9
    Author: zhangkai <zhangkai910606@163.com>
    Date:   Fri Apr 22 09:59:40 2016 +0800
    
        add GPL
    
    commit 9fc42f13cd4db1231025049a6f0218aa9176db7b
    Author: zhangkai <zhangkai910606@163.com>
    Date:   Fri Apr 22 09:49:51 2016 +0800
    
        add distributed
    
    commit 719d8537c31f45b9f3c9700acf9e8871c59fa638
    Author: zhangkai <zhangkai910606@163.com>
    Date:   Thu Apr 21 17:50:10 2016 +0800
    
        add abc
    
    commit 80b51be3c77262a9e84a7ef5f083651d4d80a738
    Author: zhangkai <zhangkai910606@163.com>
    Date:   Thu Apr 21 10:07:05 2016 +0800
    
        add 3 file
    
    commit b35460662bf2948a77ee2f12b2e9371d8b320bcb
    Author: zhangkai <zhangkai910606@163.com>
    Date:   Thu Apr 21 09:58:26 2016 +0800
    
        add readme file
    (END)

    可以看到最近一次提交时add GPL,可以看到每次的提交

    用git log显示的日志太多了加一个参数--pretty=oneline可以看到简明的日志:

    b2ba41f1f8758e77da8b08c685a587227de36fa9 add GPL
    9fc42f13cd4db1231025049a6f0218aa9176db7b add distributed
    719d8537c31f45b9f3c9700acf9e8871c59fa638 add abc
    80b51be3c77262a9e84a7ef5f083651d4d80a738 add 3 file
    b35460662bf2948a77ee2f12b2e9371d8b320bcb add readme file
    (END)

    从上面看到其中b2ba...值commit id也就是版本号是唯一的。

    在git中用HEAD表示当前的版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,如果上100个版本写成HEAD~100。

    目前当前的版本是add GPL,现在要回退到add distributed,用git reset命令:

    zhangkai@bogon � ~/git_zk/learngit � � master � git reset --hard HEAD^
    HEAD is now at 9fc42f1 add distributed

    然后看一下内容和历史状态:

    zhangkai@bogon � ~/git_zk/learngit � � master � cat readme.txt 
    git is a distributed version control system.
    git is free software.
    zhangkai@bogon � ~/git_zk/learngit � � git log --pretty=oneline 
    9fc42f13cd4db1231025049a6f0218aa9176db7b add distributed
    719d8537c31f45b9f3c9700acf9e8871c59fa638 add abc
    80b51be3c77262a9e84a7ef5f083651d4d80a738 add 3 file
    b35460662bf2948a77ee2f12b2e9371d8b320bcb add readme file
    (END)

    现在版本已经回退到了上一个版本了,但是通过git log已经看不到现在最新的那个版本了,如果刚刚你的那个窗口没有关掉,可以通过add GPL的commit id号重新再回来:

     zhangkai@bogon � ~/git_zk/learngit � � master � git log --pretty=oneline 
     zhangkai@bogon � ~/git_zk/learngit � � master � git reset --hard b2ba41f
    HEAD is now at b2ba41f add GPL
     zhangkai@bogon � ~/git_zk/learngit � � master � cat readme.txt 
    git is a distributed version control system.
    git is free software distributed under the GPL.
     zhangkai@bogon � ~/git_zk/learngit � � master � 

    ok现在就回来了.

    当git reset --hard HEAD^回退到add distributed版本时,在想恢复到add GPL就必须找到它的commit id,git中git reflog用来记录操作的每条命令:

     zhangkai@bogon � ~/git_zk/learngit � � master � git reflog 
    b2ba41f HEAD@{0}: reset: moving to b2ba41f
    9fc42f1 HEAD@{1}: reset: moving to HEAD^
    b2ba41f HEAD@{2}: commit: add GPL
    9fc42f1 HEAD@{3}: commit: add distributed
    719d853 HEAD@{4}: commit: add abc
    80b51be HEAD@{5}: commit: add 3 file
    b354606 HEAD@{6}: commit (initial): add readme file

    从上面就可以看到add GPL的commit id了,然后通过git reset就可以回来了。

    小结

      HEAD指向的版本就是当前的版本,因此git可以在版本的历史中穿梭使用命令:git reset --hard commit_id.

      用git log可以查看提交历史,以便确定要回退到哪个版本。

      如果想要回到最新的版本中,用git reflog查看历史命令,以便确定要回到未来的哪个版本。

  • 相关阅读:
    Java8系列之重新认识HashMap(转)
    kafka 消费者和生产者测试类
    zookeeper配置
    JNLP应用程序无法打开的解决办法
    Functional Programming 资料收集
    Python的问题解决: IOError: [Errno 32] Broken pipe
    python的subprocess的简单使用和注意事项
    Python tricks(7) -- new-style class的__slots__属性
    Python tricks(6) -- python代码执行的效率
    Python tricks(5) -- string和integer的comparison操作
  • 原文地址:https://www.cnblogs.com/allan-king/p/5420307.html
Copyright © 2011-2022 走看看