我们知道Git 中文件,除了被跟踪以后,文件都处于被staged(暂存区),只要文件被修改或者移动,文件最后都需要再次被add增加到staged(暂存区)。
情形一:对比被修改文件与暂存区的文件之间的差异
git diff
对比工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。
第一步修改文件(A.c已经处于暂存区中了)
echo "add new line A.c" >> A.c
git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: A.c
root@osboxes:/home/user/my_project# git diff ##对比正在修改的文件与暂存区中原始的文件
diff --git a/A.c b/A.c
index c85f73e..7cf42d9 100644
--- a/A.c
+++ b/A.c
@@ -1 +1,2 @@
this is new A.c file
git diff --staged
命令将比对已暂存文件与最后一次提交的文件差异
root@osboxes:/home/user/my_project# git add A.c #添加到暂存区中,这样暂存区就修改了
root@osboxes:/home/user/my_project# git diff --staged ##对比git暂存区中的数据与最后一次提交的文件的区别
diff --git a/A.c b/A.c
index c85f73e..7cf42d9 100644
--- a/A.c
+++ b/A.c
@@ -1 +1,2 @@
this is new A.c file
+add new line A.c
如何看懂git diff 的输出结果
知己参考即可:
diff的合并格式的详细说明
--- a/A.c ## 变动前文件
+++ b/A.c ## 变动后文件
@@ -1 +1,2 @@
this is new A.c file
+add new line A.c
减号表示第一个文件(即f1),"1"表示第1行,"2"表示连续2行。合在一起,就表示下面是第一个文件从第1行开始的连续7行。同样的,"+1,2"表示变动后,成为第二个文件从第1行开始的连续2行。
this is new A.c file
+add new line A.c
每一行最前面的标志位,空表示无变动,减号表示第一个文件删除的行,加号表示第二个文件新增的行。
总结
对比目前的文件和暂存区的变化,选项加具体的文件名称
git diff
对比暂存区和提交区域的不同,选项加具体的文件名称
git diff --staged
git diff 默认使用的是diff 的合并格式
diff -u file1 file2
当然了,对比不仅仅包含这些区域,同样包含很多中对比方式,比如:工作区与特定提交分支的文件对比。
对于这种高级用法,我们可以作为补充,但是不推荐学习。
为什么不推荐学习
掌握Git 用法,不是要学习每一个点,而是掌握关键的学习点。
Tags:
Git教程