git diff 四种比较方式

工作场景

在用git进行版本控制的时候,通常会有这样的需求:
1.我想知道我的工作目录中都发生了那些变化,以辅助我的commit操作。
2.当要真正进行提交时,我需要清楚将要提交的内容和版本库的内容有哪些不同,这样的提交是正确的吗。
3.在线上代码出现问题的时,明确的知道原来有个版本的代码是好用的,除了进行线上紧急回滚外,我需要知道到底进行了什么操作引起了失败。
除此之外可能还会有其他的需求吧。

先上理论

那git给我们提供了哪些方式,是我们对自己的修改或者变更了如指掌呢。
1. git diff
显示工作目录和索引之间的差异。
2. git diff commit
显示工作目录和指定提交之间的差异。比较常见的用法是比较工作目录于HEAD指向的提交之间的差异,这时需要用HEAD替代commit
3. git diff –cached commit
比较索引(stage)和给定提交之间的差异,其中commit可以省略,如果省略,默认比较的是索引与HEAD指向的提交间的差异。
4. git diff commit1 commit2
比较两个提交之间的差异。该命令会忽略工作目录和索引之中的内容,直接比较两个提交之间的变化。

有说有练

第一步:先初始化一个git仓库,并作两次提交,且在工作目录中进行一些变更:

mkdir git-diff
cd git-diff 
git init
echo "Hello git diff" >> readme.txt
git add .
git commit -m 'first commit'
echo "hello next commit" >> readme.txt 
git add .
git commit -m 'second commit'
echo "I'm in the stage" >> readme.txt 
git add .
echo "I'm in the workplace" >> readme.txt 

第二步,开始操作

bingo 初始化工作做好了,来看具体的操作吧:
1.git diff 实例中显示,工作目录比stage中添加了一行I’m in the workplace

git diff

diff --git a/readme.txt b/readme.txt
index cecb589..6f877a8 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,3 +1,4 @@
 Hello git diff
 hello next commit
 I'm in the stage
+I'm in the workplace

2.git diff commit 实例中对当前工作区和HEAD指向的提交进行比较,显示工作区比HEAD指向的提交新添加了两行。

git diff HEAD

diff --git a/readme.txt b/readme.txt
index 56e1883..6f877a8 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,4 @@
 Hello git diff
 hello next commit
+I'm in the stage
+I'm in the workplace

3.git diff –cached commit 实例中,用stage中的文件与HEAD指向中的版本进行了比较,很明显,我在提交提交之后想readme.txt中添加了一行I’m in stage并将其添加到了stage中。

git diff --cached HEAD

diff --git a/readme.txt b/readme.txt
index 56e1883..cecb589 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
 Hello git diff
 hello next commit
+I'm in the stage

4.git diff commit1 commit2 比较了HEAD与其上一次提交之间的差异,通过观察我们初始化的操作,可以发现,这是完全正确的显示。

git diff HEAD HEAD^

diff --git a/readme.txt b/readme.txt
index 56e1883..8adabc7 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1 @@
 Hello git diff
-hello next commit

小实例,大道理,通过简单的实例,了解命令背后的真实原理,以促进我们工作中对其的使用,以及解决问题时不那么迷茫。

猜你喜欢

转载自blog.csdn.net/zhanlovepei/article/details/49834705