github之diff命令

来源:互联网 发布:进入淘宝 编辑:程序博客网 时间:2024/06/05 20:05

1.前言

观察上一章写的时候,居然发现少写了一个命令,那就是git commit -m "描述",只有这个命令,暂存区里的文件才能真的被提交到版本库里。具体的整体,我会再最后面讲述。

2. diff

diff命令用于比较各个文件之间的差异的命令。但是diff命令有好几种:

git diffgit diff HEADgit diff --staged

他们之间都有什么区别呢。首先我们要明确一点是,github的工作体系,就简单的体系来讲(不包括分支等,那个以后我们再完善。),主要分为工作区,暂存区和版本库3个部分。

具体的情况如下;

  • 当暂存区无文件时,git diff比较的是工作区与版本库之间的区别,此时和`git diff HEAD一致。

  • 当暂存区有文件时,git diff比较的是工作区与暂存区之间的区别。
    git --staged比较的是暂存区与版本库之间的区别。

当然,默认情况下,是给出所有不同文件的,但bash是分文件给的,当有多个文件不同的时候,它会先显示一个不同的文件内容,然后光标前有一个:,如果你按d键,那么它会显示下一个不同的文件,如果你按ENTER键,它会逐行显示下一行。

事实上,它默认的工作方式是按行给出不同,你还可以使用:

git diff --color-wordsgit diff --word-diffgit diff --stat

等来改变显示不同的方式。

这样说来,就明白了许多吧。

3. 提交与撤销

工作区提交到暂存区的命令为git add 文件名,暂存区提交到版本库的命令为git commit -m "描述"

相应的撤销是:

  • 当工作区文件修改还没有提交到暂存区时,git check --文件名回退到的是和当前版本库里的版本一致的。

  • 当工作区文件修改已经提交到暂存区时,git check --文件名回退到的是和暂存区里的版本一致的。

git reset HEAD 文件名则可以把暂存区里的文件重新放回工作区中。

而如果你想对版本库进行版本回退与前进(如果你已经会退到了未来),那么你可能需要以下几个命令:

git log //查询每次提交的IDgit relog //查询所有历史和未来的提交ID,以便于能回到未来。git reset --hard HEAD^ //回退到上一版本git reset --hard HEAD^^ //回退到上上一版本git reset --hard 版本ID //回退到指定版本

4. 小结

本文中,我们对于github的追踪不同的修改进行了一定的讲解。这里再次感谢《github官方教程》以及《廖雪峰的git教程》和《阮一峰的git教程》。

原创粉丝点击