天天看点

【学习笔记】git分布式管理之版本回退

本人看的教程是廖雪峰的《git》

1. 版本回退

使用了git log命令查询出结果中各个提交的版本,如果想要回退其中一个版本只需要首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

回退版本之后,查看

$ git log
commit ecaa5fb6f06df0bf2819049e92d747777839cba (HEAD -> master)
Author: Toothsmile <@qq.com>
Date:   Mon Apr  ::  +

    this is my firt modify!

commit ea46fda6e94694d235be44639b97c56618675d63
Author: Toothsmile <@qq.com>
Date:   Mon Apr  ::  +

    this is my first gitTest


           

那么如何回到之前的版本呢,只需要我们 刚查出去的commitID,

$ git reset --hard b61b4
HEAD is now at b61b474 this is my second modfiy!
           

yes,刚才的版本又回来了,这就像是个按着Ctrl+Z和Y。

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向second modify

如果没有记录,比如关机之后想要前进到之前的版本该怎么办呢。

Git提供了一个命令git reflog用来记录你的每一次命令。

b61b474 (HEAD -> master) HEAD@{0}: reset: moving to b61b4
0ecaa5f HEAD@{1}: reset: moving to 0ecaa5f
ea46fda HEAD@{2}: reset: moving to HEAD^
0ecaa5f HEAD@{3}: reset: moving to HEAD^
b61b474 (HEAD -> master) HEAD@{4}: commit: this is my second modfiy!
0ecaa5f HEAD@{5}: commit: this is my firt modify!
ea46fda HEAD@{6}: commit (initial): this is my first gitTest
           

在上面我们可惜清晰的看见我们的git reset 操作还有之前所有的commit ID,也就意味着我们可以回退到其中任何的版本。

总结:

  • git log可以查看之前commitID,加上参数–pretty=oneline可以清晰显示
  • git reset –hard com_id,可以到相应的comid版本
  • git reflog,可以查看所有的commitID。