Git入门——版本管理(1)
一、文档跟踪
1、查看文档状态
修改test.txt文本文档,查看文件状态
git status:跟踪本地库数据, 随时监听变化,红色字体显示test.txt文本文档被修改了, 但是没有准备提交的修改后的内文档。
当我git add之后:
爆红变成了绿色,这告诉我们要被提交的文件包括刚刚修改的test.txt。可以放心提交,之后git commit 就完事儿了
2、查看文章的不同
再次修改一下文件内容,使用git diff命令用来查看文章的变化过程, 查看文件修改的内容。
红色区域显示,我删除了一句i am 啊 Chinese和一句 come back
后来又加了一句i am 啊 Chinese
总结: git status监视工作区状态,git diff查看文件的变化内容
二、版本回退
假如说我现在修改一下我文件夹下面的my.txt文档,之后提交。
$ git add my.txt
$ git commit -m "second submit"
[master 06fb353] second submit
1 file changed, 1 insertion(+)
现在你设想一下,假如我现在回退到第一版,但是我现在修改了几百次,我怎么记住这几百次都是修改了什么呢? ??又不是考最强大脑
but,Git可以记住,使用命令git log可以查看全部的修改日志。
$ git log
commit f18f4a2361e461715ba8609d5deb9591663bbaf8 (HEAD -> master)
Author: baibaoyu <1976643955@qq.com>
Date: Tue Dec 24 09:22:18 2019 +0800
test submit
commit 06fb353fa5a193b185e8fdd63ce61ffc903e3321
Author: baibaoyu <1976643955@qq.com>
Date: Tue Dec 24 09:12:52 2019 +0800
second submit
commit 5c4bcf7a0322ba4ee7d2293f906e84b59b7a4fba
Author: baibaoyu <1976643955@qq.com>
Date: Tue Dec 24 09:09:02 2019 +0800
huoying.jpg
commit 1a9d6798b401765e98cd9173d2dbf114feeb1bbd
Author: baibaoyu <1976643955@qq.com>
Date: Tue Dec 24 09:07:32 2019 +0800
first commit
上面的是最先的更新信息, 越往下时间越久远。我第一次提交备注信息是first commit
,最新的一次是test submit
但是上面的东西太乱了,让他清晰一点
$ git log --pretty=oneline
f18f4a2361e461715ba8609d5deb9591663bbaf8
(HEAD -> master) test submit
06fb353fa5a193b185e8fdd63ce61ffc903e3321 second submit
5c4bcf7a0322ba4ee7d2293f906e84b59b7a4fba huoying.jpg
1a9d6798b401765e98cd9173d2dbf114feeb1bbd first commit
里面有一堆乱七八糟的代码06fb353...
,这个就是用来区分不同的版本的。那么如何返回上一次提交的时候的版本呢?
为了清晰一些看到结果,我现在git文件夹下面的东西是这样的:
那么开始执行回退命令:
$ git reset --hard head^
HEAD is now at 06fb353 second submit
温馨提示: head^ 是回退一个版本, head^^是回退两个版本,一百个太多,就用head~100来表示。
那么再来看一看文件夹变成了什么样子:
实现操作:删除了test.txt,也就是返回到上一次提交的时候了。
git log看一下:(最新的提交消失了……)
$ git log
commit 06fb353fa5a193b185e8fdd63ce61ffc903e3321
(HEAD -> master)
Author: baibaoyu <1976643955@qq.com>
Date: Tue Dec 24 09:12:52 2019 +0800
second submit
commit 5c4bcf7a0322ba4ee7d2293f906e84b59b7a4fba
Author: baibaoyu <1976643955@qq.com>
Date: Tue Dec 24 09:09:02 2019 +0800
huoying.jpg
commit 1a9d6798b401765e98cd9173d2dbf114feeb1bbd
Author: baibaoyu <1976643955@qq.com>
Date: Tue Dec 24 09:07:32 2019 +0800
first commit
那现在想一个问题——我们现在删除了那个文件,日志文件也不要存在那个记录了,完了,那我想要再次找到上一个版本怎么办??
还记得之前说的那一段无比长的代码吗??f18f4a2361e461715ba8609d5deb9591663bbaf8
根据这段代码就可以找到原来的那个版本
$ git reset --hard f18f4a2361e461715ba8609d5deb9591663bbaf8
HEAD is now at f18f4a2 test submit
现在就回去了,看看日志文件:(原来的版本又回来了)
$ git log --pretty=oneline
f18f4a2361e461715ba8609d5deb9591663bbaf8
(HEAD -> master) test submit
06fb353fa5a193b185e8fdd63ce61ffc903e3321 second submit
5c4bcf7a0322ba4ee7d2293f906e84b59b7a4fba huoying.jpg
1a9d6798b401765e98cd9173d2dbf114feeb1bbd first commit
文件夹是下面这个样子的:
的确,他回来了,像灰太狼一样
在git log --pretty=oneline
的时候有没有发现一个现象,第一行是有颜色的,而且后面跟上head...
,这是为什么???
其实Git实现版本回退的时候是靠指针的移动实现的,head^之后,指针向下移动, 但是在这个时间节点之后的版本也仍然存在。并没有删除,所以刚才我们可以找到他。
Git还提供了一个命令,来记录每一次的命令:(主要是指针的移动)
$ git reflog
f18f4a2 (HEAD -> master) HEAD@{0}: reset: moving to
f18f4a2361e461715ba8609d5deb9591663bbaf8
06fb353 HEAD@{1}: reset: moving to head^
f18f4a2 (HEAD -> master) HEAD@{2}: commit: test submit
06fb353 HEAD@{3}: commit: second submit
5c4bcf7 HEAD@{4}: commit: huoying.jpg
1a9d679 HEAD@{5}: commit (initial): first commit
版本回退总结
1、git log
查看版本信息
2、git reset --hard head^
向上回退一个版本
3、git reset --hard 版本号
回退到相应的版本
4、git reflog
查看历史操作(head指针的移动)