github之diff命令
1.前言
观察上一章写的时候,居然发现少写了一个命令,那就是git commit -m "描述"
,只有这个命令,暂存区里的文件才能真的被提交到版本库里。具体的整体,我会再最后面讲述。
2. diff
diff命令用于比较各个文件之间的差异的命令。但是diff命令有好几种:
git diff
git diff HEAD
git diff --staged
- 1
- 2
- 3
他们之间都有什么区别呢。首先我们要明确一点是,github的工作体系,就简单的体系来讲(不包括分支等,那个以后我们再完善。),主要分为工作区,暂存区和版本库3个部分。
具体的情况如下;
当暂存区无文件时,
git diff
比较的是工作区与版本库之间的区别,此时和`git diff HEAD
一致。当暂存区有文件时,
git diff
比较的是工作区与暂存区之间的区别。
而git --staged
比较的是暂存区与版本库之间的区别。
当然,默认情况下,是给出所有不同文件的,但bash是分文件给的,当有多个文件不同的时候,它会先显示一个不同的文件内容,然后光标前有一个:,如果你按d键,那么它会显示下一个不同的文件,如果你按ENTER键,它会逐行显示下一行。
事实上,它默认的工作方式是按行给出不同,你还可以使用:
git diff --color-words
git diff --word-diff
git diff --stat
- 1
- 2
- 3
等来改变显示不同的方式。
这样说来,就明白了许多吧。
3. 提交与撤销
工作区提交到暂存区的命令为git add 文件名
,暂存区提交到版本库的命令为git commit -m "描述"
。
相应的撤销是:
当工作区文件修改还没有提交到暂存区时,
git check --文件名
回退到的是和当前版本库里的版本一致的。当工作区文件修改已经提交到暂存区时,
git check --文件名
回退到的是和暂存区里的版本一致的。
而git reset HEAD 文件名
则可以把暂存区里的文件重新放回工作区中。
而如果你想对版本库进行版本回退与前进(如果你已经会退到了未来),那么你可能需要以下几个命令:
git log //查询每次提交的ID
git relog //查询所有历史和未来的提交ID,以便于能回到未来。
git reset --hard HEAD^ //回退到上一版本
git reset --hard HEAD^^ //回退到上上一版本
git reset --hard 版本ID //回退到指定版本
- 1
- 2
- 3
- 4
- 5
4. 小结
本文中,我们对于github的追踪不同的修改进行了一定的讲解。这里再次感谢《github官方教程》以及《廖雪峰的git教程》和《阮一峰的git教程》。