Git diff 命令

git diff命令解析

diff里面a表示前面那个变量,b表示第二个变量

HEAD     commit版本
Index     staged版本

(-)创建演示目录test_git,添加文件a.txt

mkdir test_git
git init
touch a.txt
git add a.txt
git commit  a.txt -m '首次提交'
git push

a、查看尚未暂存的文件更新了哪些部分,不加参数直接输入

    git diff 

此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异
也就是修改之后还没有暂存起来的变化内容

echo "i am a file" > a.txt
git diff a.txt

这里写图片描述

结果如图,我刚才修改的a.txt文件的区别被显示出来,但是注意这是和Index(暂存区)做的比较。先附上git暂存区的概念图:
这里写图片描述


b、查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异

    git diff --cached
    git diff --staged

1)给a.txt文件添加一行,然后添加到暂存区

root@iZ28npoowsjZ:~/test_git# echo "3.i fuck this file">>a.txt
root@iZ28npoowsjZ:~/test_git# git add a.txt 
root@iZ28npoowsjZ:~/test_git# git diff --staged 

这里写图片描述

显示的是下一次commit时提交到HEAD的内容(不带-a情况下),这里我有一个误区,总以为add命令只是第一次添加文件的时候才会使用,其实git add 命令可以把所有当前的修改都先保存到暂存区。

git commit 命令才是将暂存区的命令提交到本地master。
git push 命令是把本地master的变化push到远程master。


c、显示工作版本(Working tree)和HEAD的差别

    git diff HEAD

这里我算是知道了,git diff命令不加参数的时候就是用本地工作目录下的代码进行比较的。


d、直接将两个分支上最新的提交做diff

    git diff topic master 或 git diff topic..master

e、输出自topic和master分别开发以来,master分支上的changed。

   git diff topic...master

f、查看简单的diff结果,可以加上–stat参数

git diff --stat

g、查看当前目录和另外一个分支的差别

git diff test

显示当前目录和另一个叫’test’分支的差别
git diff HEAD – ./lib
显示当前目录下的lib目录和上次提交之间的差别(更准确的说是在当前分支下)


h、比较上次提交commit和上上次提交

    git diff HEAD^ HEAD

i、比较两个历史版本之间的差异

    git diff SHA1 SHA2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章