查看历史版本信息
git log 查看之前的版本信息。
其中可以看到 HEAD->master(或 main),HEAD 是指向当前版本的指针,之后修改版本其实就是移动这个指针。
如果最下面一行是冒号,说明记录多到一页装不下了。
多屏显示控制方式:空格向下翻页,b 向上翻页,q退出。
git log --pretty=oneline 以每次版本占一行的,漂亮的方式 显示版本信息。
git log --oneline 连哈希值也会缩短(被称为局部索引值)。只能查看之前的版本信息,版本回退后不能看到将来的版本。
git reflog 显示 commit 信息,以及从当前版本移动到这个版本需要多少步(如:HEAD@{1}表示差了一个版本,0表示这个版本就是当前版本)可以查看历史/未来版本。
版本前进 / 回退
本质就是移动 HEAD 指针。
方法1:首先通过 git log --oneline 找到要跳转的版本的哈希值
git reset --hard Fd83ed9 // 结尾是刚才获取的哈希值,即局部索引值
不管前进后退都是这种方法。
方法2:只能后退
git reset --hard^//回退一个版本。有几个异或符号,回退几个版本。
方法3:只能后退
git reset hard~3//回退3个版本
soft:修改本地库的指针。修改后输入cat good.txt 查看本地库的文件,会发现文件已经变成修改版本后的文件了。
如果输入 git status ,会发现暂存区也被 modified 了。并不是因为暂存区变了,而是本地库指针移动了,和暂存区无法对应了。
mixed:修改本地库的指针,并重置暂存区。
hard:修改本地库的指针,并重置暂存区和工作区。
删除及找回删除文件
如果是删除并提交了删除操作之后:
rm aaa.txt//删除文件
git add aaa.txt//添加删除操作
git commit -m "" aaa.txt//提交删除操作
git reflog//查看历代版本及其哈希值
git reset --hard abcdef//回退到有这个文件的版本
git checkout -- aaa.txt//另一种方法
如果是删除后把删除操作添加到暂存区后:git reset --hard HEAD 。
比较文件差异
//工作区未提交到暂存区:
git diff a.txt//比较该文件做的改动。红色行删除,绿色行新增/修改。
//工作区提交到暂存区后:上一种方法查不出差别。
git diff HEAD a.txt//比较本地库的版本
git diff HEAD^3 a.txt//比较本地库的当前版本和倒退三个版本的区别
不带文件名就是比较多个文件。
|