Git常用命令:http://blog.csdn.net/asheandwine/article/details/78980541
在桌面创建learngit文件夹,把它变为一个Git仓库。
参考:Git教程——廖雪峰
在git仓库里创建一个TXT文件。名称 readme.txt,
版本A —— 最初内容:(备注:wrote a readme file)
I like apples.
he likes apples, too.
版本B —— 二次修改:(备注:change bananas)
I like bananas.he likes apples, too.
版本C —— 三次修改:(备注 he bananas)
I like bananas.
he likes bananas, too.
用 $ git log 命令查看提交的历史记录:
看到的一大串字符串如 42b85d1...6a6cded 的是 commit id(某次提交的版本号).
可以看出三次修改后提交的记录。每次提交的版本 commit id 不同。备注在头部已标明。
从上到下依次记录从第三次修改到第一次修改的提交记录(版本C 到 版本A)。
在Git中,用 HEAD 表示当前版本,也就是指目前最新的提交,上一个版本就是 HEAD^ ,上上一个版本就是 HEAD^^ ,
往上100个版本写100个 “^”比较不容易数过来,所以写成 HEAD~100
$ git reset --hard HEAD^
查看 readme.txt 数据
$ cat readme.txt
HEAD is now at 10819ab change bananas 一句。
HEAD 指的是当前版本,这句话意思 “现在当前版本是 commit id 为 10819ab,备注为 change bananas 的版本(版本B)”。
对比第一张记录图可以看到成功从刚刚的版本C(he bananas)回退到它的上一个 版本B(change bananas )。
如果回退到指定版本后又想再回去之前的那些最新的版本。
即假如我们从版本 he bananas(版本C) 回退到版本 change bananas(版本B),
又想从现在的 change bananas(版本B) 回到原来的he bananas(版本C),则可以使用:
$ git reset --hard
使用 git log 查看记录。如果版本 he bananas 的 commit id 是 42b85d1...6a6cded
可以使用 $ git reset --hard 42b85d1 命令行回退至版本 he bananas(版本C) 。
版本号没必要写全,前几位就可以了,Git会自动去找。也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的 commit id 怎么办?
假如你 昨天从版本C 回退到了版本B 后关了电脑,第二天想从 版本B 版本恢复到 版本C 时候,
就必须找到 版本C的 commit id。而此时你已经关过电脑重启。再执行 $ git log命令将是你今天的提交记录。那以前的那个版本号怎么找?
Git提供了一个命令 $ git reflog 用来记录你的每一次命令。
左边一列是 commit id,从上到下依次是从最近到最远的你自己执行的命令,
从最后往最前推,HEAD {4} ——>{1}:
该句意思是:初次提交的是备注为“wrote a readme fille”的文件(版本A)。即第一次新建的 readme.txt 时候我们提交的行为。
该句意思是:提交的是备注为“change bananas”的文件(版本B)。即第二次修改的 readme.txt 时候我们提交的行为。
commit: he bananas该句意思是:提交的是备注为“he bananas”的文件(版本C)。即第三次修改的 readme.txt 时候我们提交的行为。
reset:moving to HEAD^该句意思是:重置到当前版本的上一版本( HEAD^ )的文件。即回退 readme.txt 版本的时候我们提交的行为。
该句意思是:从当前版本重置到指定的 commit id 版本的文件。即回退版本号为 42b85d1 的 readme.txt 时候我们提交的行为。