5.对比文件变化

小白的故事

本故事纯属虚构,如有雷同,^0^那可太巧了

了解了工作去和版本库的区别,小白开始自己开动脑筋举一反三。既然git status可以查看哪些文件发生的变化。那能不能知道具体的变化是什么呢。

毕竟作为一个程序猿,临时被唐僧召唤的事情经常发生。小白正在思考着,产品经理就喊上了。有个新需求需要确认排期。小白只好怪怪的跑过去。
确认完排期,回到座位上,继续开发今天的功能。add commit已经熟练的飞起。貌似git也很简单嘛。

中午到了,开饭。吃过午饭回到坐位的小白发现电脑关机了。据说是某个不知名的家伙不小心提到了插座。
好吧,重新开机就好了,打开自己熟悉的ide,一切如常。上午的功能还没有commit,看下改过哪些文件吧。git status发现改了十几个文件。
好多都已经记不清改的什么了,肿木办?先把自己记忆清除的几个add。然后commit。剩下几个实在想不起来改过什么了。ide也没法回退了,这该如何是好啊。

正在小白苦恼的时候,老鸟过来了。
看着发呆的小白,老鸟关系的问“小猴子,今天怎么发呆了?”。
小白如实回答“有几个文件忘记改过什么地方了,电脑关过机,ide也没法撤销操作了”。
老鸟熟练的敲下了git diff package.json,这时候所有的改动一目了然的展现在了小白面前。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ git diff package.json
diff --git a/package.json b/package.json
index 00570c9..f06efde 100755
--- a/package.json
+++ b/package.json
@@ -16,7 +16,6 @@
"@vue/cli-plugin-eslint": "^4.1.0",
"@vue/cli-service": "^4.1.0",
"babel-eslint": "^10.0.3",
- "eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0",
"vue-template-compiler": "^2.6.10"
},
@@ -27,7 +26,7 @@
},
"extends": [
"plugin:vue/essential",
- "eslint:recommended"
+ "eslint:recommendeddd"
],
"rules": {
"no-console": "off"

还不待老鸟解释,小白已经明白减号-代表的是自己删除的行+是产生的新行。

这下好了,可以看出自己修改过的细节,就可以很清楚的解决问题了。

看着小白激动的目光,老鸟挥一挥衣袖,不带走一点代码。飘然而去。

望着老鸟离去的背影,小白激动的追上去,语出惊人“大神,留步!”

小结

git diff --filename 可以比较文件的变更情况。

  • 如果文件git add过,会显示工作区和暂存区的差别。
  • 如果没有git add过,会显示工作区和仓库历史版本的差异。

git diff --cached [file] 显示暂存区和上一个commit的差异

git diff HEAD 显示工作区与当前分支最新commit之间的差异

git diff --shortstat "@{0 day ago}" 显示今天你写了多少行代码

关于工作区和版本库的介绍,可以看上一篇《4.工作区和版本库》