转自: https://blog.csdn.net/ezhchai/article/details/79387452
1.比较修改之间的差异
git diff不加参数即默认比较工作区与暂存区
git diff --cached [<path>...]比较暂存区与最新本地版本库(本地库中最近一次commit的内容)
git diff HEAD [<path>...]比较工作区与最新本地版本库。如果HEAD指向的是master分支,那么HEAD还可以换成master
git diff commit-id [<path>...]比较工作区与指定commit-id的差异
git diff --cached [<commit-id>] [<path>...]比较暂存区与指定commit-id的差异
git diff [<commit-id>] [<commit-id>]比较两个commit-id之间的差异
例如,比较工作区和暂存区的main.cpp文件的差异。
$ git diff main.cpp
diff --git a/main.cpp b/main.cpp
index 57a5778..24604db 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,6 +1,7 @@
#include <iostream>
using namespace std;
int main(){
- cout<<"Hello, World!"<<flush;
+ int a, b;
+ cout<<"Hello, World!"<<endl;
return 0;
}
\ No newline at end of file
2.制作补丁
git diff还可以制作补丁文件,在其他机器上对应目录下使用 git apply patch 将补丁打上即可
git diff > patchpatch的命名是随意的,不加其他参数时作用是当我们希望将我们本仓库工作区的修改拷贝一份到其他机器上使用
git diff --cached > patch是将我们暂存区与版本库的差异做成补丁
git diff --HEAD > patch是将工作区与版本库的差异做成补丁
git diff filename > patch将单个文件做成一个单独的补丁
git apply patch 应用补丁。
应用补丁之前我们可以先检验一下补丁能否应用,git apply --check patch 如果没有任何输出,那么表示可以顺利接受这个补丁。
使用git apply --reject patch将能打的补丁先打上,有冲突的会生成.rej文件,此时可以找到这些文件进行手动打补丁。
其他git diff的文章:
https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/diffs
https://www.jianshu.com/p/80542dc3164e