小白的故事
本故事纯属虚构,如有雷同,^0^那可太巧了
了解了工作去和版本库的区别,小白开始自己开动脑筋举一反三。既然git status
可以查看哪些文件发生的变化。那能不能知道具体的变化是什么呢。
毕竟作为一个程序猿,临时被唐僧召唤的事情经常发生。小白正在思考着,产品经理就喊上了。有个新需求需要确认排期。小白只好怪怪的跑过去。
确认完排期,回到座位上,继续开发今天的功能。add
commit
已经熟练的飞起。貌似git也很简单嘛。
中午到了,开饭。吃过午饭回到坐位的小白发现电脑关机了。据说是某个不知名的家伙不小心提到了插座。
好吧,重新开机就好了,打开自己熟悉的ide,一切如常。上午的功能还没有commit,看下改过哪些文件吧。git status
发现改了十几个文件。
好多都已经记不清改的什么了,肿木办?先把自己记忆清除的几个add。然后commit。剩下几个实在想不起来改过什么了。ide也没法回退了,这该如何是好啊。
正在小白苦恼的时候,老鸟过来了。
看着发呆的小白,老鸟关系的问“小猴子,今天怎么发呆了?”。
小白如实回答“有几个文件忘记改过什么地方了,电脑关过机,ide也没法撤销操作了”。
老鸟熟练的敲下了git diff package.json
,这时候所有的改动一目了然的展现在了小白面前。
1 | $ git diff package.json |
还不待老鸟解释,小白已经明白减号-
代表的是自己删除的行+
是产生的新行。
这下好了,可以看出自己修改过的细节,就可以很清楚的解决问题了。
看着小白激动的目光,老鸟挥一挥衣袖,不带走一点代码。飘然而去。
望着老鸟离去的背影,小白激动的追上去,语出惊人“大神,留步!”
小结
git diff --filename
可以比较文件的变更情况。
- 如果文件
git add
过,会显示工作区和暂存区的差别。 - 如果没有
git add
过,会显示工作区和仓库历史版本的差异。
git diff --cached [file]
显示暂存区和上一个commit的差异
git diff HEAD
显示工作区与当前分支最新commit之间的差异
git diff --shortstat "@{0 day ago}"
显示今天你写了多少行代码
关于工作区和版本库的介绍,可以看上一篇《4.工作区和版本库》