git-diff
1.diff说明
用于比较两次修改的差异
1-1.参数
参数 | 描述 |
---|---|
–cached | 显示暂存区(已 add 但未 commit 文件)和最后一次 commit (HEAD)之间差异。 |
–staged | 同 --cached。 |
–stat | 查看简单的 diff 比较结果。 |
1-2.改动范围说明
@@ -l,s +l,s @@
:其中l
是起始行号,s
是更改 (c)hunk 应用于每个相应文件的行数。-
表示原始文件,+
表示新(修改)文件。请注意,它不仅显示受影响的行,还显示上下文行。
-1,5
在原始文件中(用-
表示)。它表明第一行是开始和 5 个受影响的/上下文行
+1,9
在新的(修改过的)文件中(由+
表示),第一行也是开始和 9 个受影响的/上下文行。
git diff
diff --git a/xxx.txt b/xxx.txt
index 74d9274..324b9a6 100644
--- a/xxx.txt
+++ b/xxx.txt
@@ -1,5 +1,9 @@
....
1-3.查看diff概要
git diff --stat
a3.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
2.使用
2-1.工作区和索引区对比
文件未被
git add
添加时候
# 查看所有改动在工作区和索引区对比
git diff
# 查看某个文件在工作区和索引区对比
git diff <file_name> 或者 git diff -- <file_name>
# 查看多个文件在工作区和索引区对比
git diff <file_name_1> <file_name_2> 或者 git diff -- <file_name_1> <file_name_2>
2-2.工作区和版本库(commit)对比
文件未被
git add
添加时候
# 查看所有改动在工作区和指定版本库中的比对
git diff <commit>
# 查看某个文件在工作区和指定版本库中的比对
git diff <commit> -- <file_name>
2-3.暂存区和版本库(commit)对比
文件被
git add
但未被git commit
时
# 查看暂存区和上一次提交的最新版本(HEAD)之间的所有文件差异
git diff --cached
# 查看暂存区和指定版本之间的所有文件差异
git diff --cached <commit>
# 查看暂存区和 HEAD 之间的指定文件差异
git diff --cached -- <file_name>
# 查看暂存区和指定版本之间的指定文件差异
git diff --cached <commit> -- <file_name>
2-4.版本库(commit)和版本库(commit)对比
# 查看两个版本之间的差异
git diff <commit_1> <commit_2>
# 查看两个版本之间的指定文件之间的差异
git diff <commit_1> <commit_2> -- <file_name_1> <file_name_2>
# 查看两个版本之间的改动的文件列表
git diff <commit_1> <commit_2> --stat
# 查看两个版本之间的文件夹src的差异
git diff <commit_1> <commit_2> src
3.git diff 没有点、两个点和三个点的区别
3-1.区别
git diff 的参数不是标识范围,就是标识两个commit 之间的差异,跟范围没有关系
和git log 相比,git diff 是两个commit点的比较,不涉及范围,没有点和两个点代表直接比较,三个点代表从merge点开始比较
- git diff foo bar: 比较 foo 和 bar两个commit点的差别
- git diff foo..bar:比较 foo 和 bar两个commit点的差别(等同于上面)
- git diff foo...bar: 比较的foo和bar merge base那个点(最近的共同的parent)和 bar