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 


将当前版本回退至上一个版本:

把 readme.txt 回退到上一个版本(此时是备注为“he bananas”的提交版本(版本C)。)

 $ 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)回退到它的上一个 版本Bchange bananas )。

从回退过的版本在恢复到原来的版本:

如果回退到指定版本后又想再回去之前的那些最新的版本。

即假如我们从版本 he bananas(版本C) 回退到版本 change bananas(版本B),

又想从现在的 change bananas版本B 回到原来的he bananas版本C,则可以使用:

 $ git reset --hard <comment id> 

使用 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}:


commit: ( initial )        initial意为“最初的”。

该句意思是:初次提交的是备注为“wrote a readme fille”的文件(版本A)。即第一次新建的 readme.txt 时候我们提交的行为。

commit: change bananas

该句意思是:提交的是备注为“change bananas”的文件(版本B)。即第二次修改的 readme.txt 时候我们提交的行为。

commit: he bananas

该句意思是:提交的是备注为“he bananas”的文件(版本C)。即第三次修改的 readme.txt 时候我们提交的行为。

reset:moving to HEAD^

该句意思是:重置到当前版本的上一版本( HEAD^ )的文件。即回退 readme.txt 版本的时候我们提交的行为。

reset:moving to 42b85d1

该句意思是:从当前版本重置到指定的 commit id 版本的文件。即回退版本号为 42b85d1 的 readme.txt 时候我们提交的行为。


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐