Git学习(第二天)
Git的版本回退:
如果想查看版本库中的历史记录,可以通过git log 命令可以查看到所以的的版本记录信息。
$ git log commit 53b0c21600dcebc3b7d768a83c02f25cfc045b44 Author: BaiKeyang <baikeyang@vip.qq.com> Date: Thu Jan 5 11:30:43 2017 +0800 添加了一段文字 Add Time:2017-01-05 commit 4b7b1694d16febe3595be4924b8a6492b83b3e84 Author: BaiKeyang <baikeyang@vip.qq.com> Date: Wed Jan 4 12:54:44 2017 +0800 修改描述文档 commit 068eefede73633fdabc2bb60fda6369e2e0b0f11 Author: BaiKeyang <baikeyang@vip.qq.com> Date: Wed Jan 4 09:32:28 2017 +0800 wrote a readme file
Git的提交日志显示是从时间最近到最远显示的,如果感觉上面的信息太多,不方便查看可以试试加上参数--pretty=oneline的下面这个命令:
$ git log --pretty=oneline 53b0c21600dcebc3b7d768a83c02f25cfc045b44 添加了一段文字 Add Time:2017-01-05 4b7b1694d16febe3595be4924b8a6492b83b3e84 修改描述文档 068eefede73633fdabc2bb60fda6369e2e0b0f11 wrote a readme file
上面信息中,那一长串类似 53b0c21600dcebc3b7d768a83c02f25cfc045b44 就是commit ID版本号。Git的版本号不想SVN的版本,SVN的版本是1,2,3……n 逐个递增的数字,而Git的版本号是一个SHA1计算出来的一个非常大的数字,用十六进制表示。所以每个人的commit id 肯定都不一样咯。
在实际的使用过程中,经常会遇到一些需要回退到旧版本的操作。在回退的到旧的版本之前,首先需要知道当前是哪个版本。在Git中,HEAD表示当前版本,也就是最新提交的53b0c21600dcebc3b7d768a83c02f25cfc045b44(每个人的版本号都是不一样的),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^显然不是个方法,所以可以写成HEAD~100。
要回退到版本可以使用git reset命令:
$ git reset --hard HEAD^ HEAD is now at 4b7b169 修改描述文档
看看readme.txt的内容是不是上个版本的内容,使用cat 命令查看:
$ cat readme.txt Git is a version control system.Hello Git. Git is free software.
readme.txt的内容已经回到上个版本,通过git log可以查看到当前版本库的信息:
$ git log commit 4b7b1694d16febe3595be4924b8a6492b83b3e84 Author: BaiKeyang <baikeyang@vip.qq.com> Date: Wed Jan 4 12:54:44 2017 +0800 修改描述文档 commit 068eefede73633fdabc2bb60fda6369e2e0b0f11 Author: BaiKeyang <baikeyang@vip.qq.com> Date: Wed Jan 4 09:32:28 2017 +0800 wrote a readme file
当操作回退时发现回退的版本不是自己想要的版本内容,需要重新操作操作之前的版本时,可以在命令窗口中找到之前版本的commit id,然后回到指定版本:
$ git reset --hard 53b0c21600dcebc3b7d768a83c02f25cfc045b44 HEAD is now at 53b0c21 添加了一段文字 Add Time:2017-01-05
在指定版本的时候没必要写全,只需要写前几位就可以了,如
$ git reset --hard 53b0c21 HEAD is now at 53b0c21 添加了一段文字 Add Time:2017-01-05
如果我们在回退完之后就只顺手关闭了命令窗口,也没有关系。可以通过git reflog 查看你每一从操作命令:
$ git reflog 53b0c21 HEAD@{0}: reset: moving to 53b0c21600dcebc3b7d768a83c02f25cfc045b44 4b7b169 HEAD@{1}: reset: moving to HEAD^ 53b0c21 HEAD@{2}: reset: moving to 53b0c21600dcebc3b7d768a83c02f25cfc045b44 4b7b169 HEAD@{3}: reset: moving to HEAD^ 53b0c21 HEAD@{4}: commit: 添加了一段文字 Add Time:2017-01-05 4b7b169 HEAD@{5}: commit: 修改描述文档 068eefe HEAD@{6}: commit (initial): wrote a readme file
前面 53b0c21 就是commit id,我们可以通过commit id 也可以回到你想要的那个版本。
HEAD指向的版本是当前版本,Git允许我们在版本的历史之间来回穿梭,使用命令 git rest --hard commint_id
回退之前可以使用git log 查看提交历史,以便确定需要退回哪个版本
要重新回到 退回操作之前,使用git reflog查看命令历史,以便确定要回到未来的哪个版本
Git的暂存区理解: