天天看点

git撤销指令和对比差异指令

1.git status :查看缓存区状态

我们在工作目录下创建一个name.txt文件夹。打开git bash,输入

git status

指令
git撤销指令和对比差异指令
git提示我们创建了name.txt文件,但是还未进行

add

操作加入到缓存区,所以git目前无法跟踪。
根据提示我们输入add指令:

git add name.txt

,然后输入

git status

再查看缓存区状态
git撤销指令和对比差异指令
name.txt变成绿色了,说明我们

add

操作成功,那假如说我add之后我们我想撤销怎么办

(未commit)

。我们可以执行

git reset HEAD name.txt

指令撤销。最后输入

git status

再查看缓存区状态
git撤销指令和对比差异指令
可以看到name.txt变成了未add了

2.git checkout --文件名

git checkout --文件名 用于撤销工作区的内容。同样举上面的例子:假如说昨天name.txt被我提交到缓存区了,今天我又对name.txt进行修改,但是现在我想把工作区的内容撤销掉。

我们可以先使用

git diff name.txt

查看工作区和缓存区的差异
git撤销指令和对比差异指令
发现今天我只给name.txt添加了俩个字母aa(当然日常工作可不是这么简单,你一天工作可能写到自己发懵,你手动删除根本不知从哪开始),我想恢复到昨天的内容可以调用:

git checkout -- name.txt

。你打开你的文件就会发现内容已经恢复到昨天的状态。

git diff name.txt

可以查看工作区和缓存区的差异,那工作区和本地仓库差异、缓存区和本地仓库差异怎么看。

3.查看差异指令

git diff

比较的是工作区和暂存区的差别

git diff --cached

比较的是暂存区和版本库的差别

git diff HEAD

可以查看工作区和版本库的差别

还是举上面的例子。name.txt文件被我们commit到了版本库,现在我在工作区对name.txt进行修改。通过

git diff HEAD name.txt

可以查看工作区和版本库的差异
git撤销指令和对比差异指令
现在我在工作区对name.txt进行修改后进行

add

操作,通过

git diff --cached name.txt

可以查看缓存区和版本库的差异
git撤销指令和对比差异指令
因为我们add之后缓存区和工作区的代码已经一样,因此他们和版本库的差异是相同的。

4.git reset 版本号

git reset 版本号

可以让我们回退到某个版本,默认是版本库和缓存区都会回退,工作区不会回退。

依旧使用上面的例子:假如说我们今天对name.txt修改了然后准备下班我们把它add到缓存区,然后commit到版本库。但是突然发现有个bug怎么办?

先调用

git reflog

查看我们的提交的版本号,这个指令可以看到我们所有的操作,包括删掉的

commit

git撤销指令和对比差异指令
然后我们可以看到第一个commit是我们刚提交的版本吗,如果要回到红圈圈起来的那个版本我们可以调用:

git reset 6637c52

。最后调用

git log

查看一下日志。
git撤销指令和对比差异指令

已经显示版本回退成功了

需要注意的是缓存区也会跟随版本回退,工作区不变。当你重新修改完后需要add再commit。

继续阅读