您的位置:首页 > 其它

Git diff 命令

2016-01-19 16:33 267 查看

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 diffHEAD


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

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

git difftopic 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 diffHEAD^ HEAD


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

git diffSHA1 SHA2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: