有关Git那些事儿(四)------穿越历史与未来

上一小节我们学会了如何修改文件,并提交到Git版本库中。我们再练习一次,修改love.txt文件如下:

I love you so much as the mouse like rice.
Do you know?
Every day

之后提交:

git add love.txt
git commit -m "append"

命令行返回如下:

[master 37ae842] append
 1 file changed, 1 insertion(+)

这样频繁地修改文件、提交文件到版本库的过程,如同玩单机版RPG游戏时,我们在打BOSS之前会手动存盘,以防万一被杀掉,可以从最近的记录开始。Git也是如此,修改到一定程度可以手动保存,利用commit这个命令。如果文件改乱了,还可以从最近的一个commit恢复,而不是从头开始。

现在,我们想查找love.txt中一共修改了几次,我们可以利用git log命令查找历史。

git log

命令行返回如下信息:

commit 37ae8429ec61ed6e43e5251df9ed729f831e7544 (*HEAD -> master*)
Author: xxlquanrou <xxlquanrou@163.com>
Date:   Sun Jan 6 14:05:41 2019 +0800

    append

commit 664f71e56621d229f2d98da0801aa3b1cf0c91ea
Author: xxlquanrou <xxlquanrou@163.com>
Date:   Sat Dec 29 22:39:30 2018 +0800

    add a sentence

commit b372d91bb9765311ce5d31bb2d1b083902a2244c
Author: xxlquanrou <xxlquanrou@163.com>
Date:   Fri Dec 28 23:26:12 2018 +0800

    a love song

我们从上面的信息中可以知道,共提交了3次修改,最近的一次是append,上一次是add a sentence,第一次是a love song

友情提示:上面类似37ae8429ec61e...的是commit id(版本号),是SHA1计算出的非常庞大的数字,16进制表示,具有唯一性。另外,你的跟我的肯定不一样.

Git中,HEAD相当于C语言中的指针,指向当前版本,此时指最新提交的37ae842,上一个版本是HEAD^,上上一个版本是HEAD^^,依次类推,50个版本可以写50个^,不过不太容易数,可以写成HEAD-50

现在,把当前版本append退回到上上一个版本a love song,可以使用git reset命令:

git reset --hard HEAD^^

命令行回复信息如下:

HEAD is now at b372d91 a love song

现在使用cat命令,查看love.txt中的内容,是不是回到了版本a love song

cat love.txt

命令行回复:

I love you as the mouse like rice.

果然回到了第一次”遇见“的地方~

我们可以用git log命令查看一下现在版本库的情况:

git log

命令行回复如下:

commit b372d91bb9765311ce5d31bb2d1b083902a2244c (*HEAD -> master*)
Author: xxlquanrou <xxlquanrou@163.com>
Date:   Fri Dec 28 23:26:12 2018 +0800

    a love song

仔细对比,发现中间的两处修改的”存根“不见了,感觉像穿越回古代,回不去了!肿么破?

莫急。只要别手贱将刚才的命令行窗口关闭,就还有补救的办法。例如,想找回最近修改的那个版本apend,先找到它的commit id版本号37ae84,然后使用git reset —hard命令可以回到现代:

git reset --hard 37ae84

版本号没必要写全,Git可以根据前面几位自动判断。

命令行回复如下:

HEAD is now at 37ae842 append

再次查看love.txt中的内容:

cat love.txt

命令行回复如下:

I love you so much as the mouse like rice.
Do you know?
Every day

哈哈,我胡汉三又回来啦~

假如,你回退到了某个版本,关掉了电脑,过了几天又想回到最新的版本,你不知道此版本的commit id,可以使用git reflog命令查看你的每一次命令:

git reflog

命令行回复如下:

37ae842 (*HEAD -> master*) HEAD@{0}: reset: moving to 37ae84
b372d91 HEAD@{1}: reset: moving to HEAD^^
37ae842 (*HEAD -> master*) HEAD@{2}: commit: append
664f71e HEAD@{3}: commit: add a sentence
b372d91 HEAD@{4}: commit (initial): a love song

从上面可以看到,哪个版本的id号都是一目了然的。

现在的你,可以在现在和过去之间随意穿梭啦~

课后小结来啦:

  1. HEAD指向的是当前版本,是一个指针。可以使用命令git reset --hard commit_id进行版本之间的穿越,也可以使用相对关系git reset --hard HEAD^进行版本之间的转换。
  2. 想回到过去,使用git log指令可以查看历史命令,确定想要回到历史哪个版本(针对当前版本来说)。
  3. 想穿越到未来,使用git reflog命令可以查看历史命令,确定要回到未来的哪个版本(针对当前版本来说)。
  4. 查看当前版本中文件内容,使用指令cat <fileName>

本小节到此结束,预知后事如何,且听下回分解哈~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,649评论 4 54
  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,678评论 1 17
  • 1、回款:截止到昨天下班前,从录入的情况来看,回款很不理想。明天是回款最后一天,请大家一定要抓紧时间。目前销售情况...
    松松劲柏阅读 180评论 0 0
  • 听张巨涛神侃也是有趣的事儿,在桌子上吃饭,他绘声绘色地讲在昆明办理财务手续之难,过程的复杂、艰难和幽默,令人喷饭。...
    乔桥阅读 523评论 1 2
  • 一. Vocabulary 1.strike it rich (1) 原文:Mom handed us $1,00...
    梁两小无猜阅读 293评论 0 0