Git:关于git diff 是和谁对比的问题
来源:互联网 发布:形容心里暗黑的网络语 编辑:程序博客网 时间:2024/06/05 03:19
今天看了廖雪峰的关于git的教程,发现了一个diff问题,弄了很多遍,终于弄清了,git diff 到底是和暂存区(index)还是和版本库对比的问题,记录一下。
首先我新创建一个文件,如下图所示:
touch test.txtls
上述命令会产生一个test.txt文本,如下图所示:
用命令查看一下当前git仓库的状态:
git status
会显示有未被追踪(untracked)的文件。接下来我们先git diff 一下:
git diff test.txt
没有反应,那我们add一下之后,再git diff:
git add test.txtgit diff test.txt
没有任何反应,好,我们commit一下,然后修改test.txt文件,加上一串字符串‘111111’:如下图所示:
git commit -m "add a file named test.txt"vim test.txtgit diff test.txt
现在你看,diff结果出来了,看来当临时区(Index)为空的时候,工作区进行了修改,也是可以比较的,是否是和上一次的提交记录进行的比较吗???、让我们继续往下进行:
git add test.txtgit diff test.txt
你看,没有结果,现在的情况是工作区和临时去的内容是一致的,因为git add 的作用就是把工作区的内容添加到临时区。现在两者一致了git diff 就没内容了,好,现在我们不着急提交(commit),我们修改一下工作区的test.txt(增加2222。。。字符串),然后看一下git diff的结果:
vim test.txtgit diff test.txt
现在显示的结果是:
11111.。。。这个应该是工作区和临时区一致,所以前面没有+号
222222这个字符串应该是工作区有,临时去没有,所以前面有+,
到这一步,我们可以大致猜出来,当临时区为空的时候(工作区有修改)是和上一次的提交记录对比的,如果工作区有内容,那么就是和工作区的内容对比的。
好了,继续:
git add test.txtgit diff test.txt #没有内容显示git commit -m "modify the test by add the 1111and 222"git diff test.txt #没有显示内容
ok,到此结束,结论:
1,当工作区有改动的时候,临时区为空(没有进行git add),那么diff的对比是和上次的commit的记录进行对比的。
2,当工作区有改动,临时区有东西的时候,diff是和临时区进行比较的。
- Git:关于git diff 是和谁对比的问题
- python 关于git下unix和windows换行符不同导致稍微改动一行代码git diff就是全部文件对比的解决方案
- git diff 和 git reset
- linux 中关于git diff的配置
- 关于git diff的一个命令
- Git diff hash顺序的问题
- Linux的diff和git diff生成patch/打patch
- git diff的用法
- git diff的用法
- Git diff的用法
- git diff的用法
- git diff的用法
- git diff的用法
- git diff的用法
- git diff的用法
- git diff的说明
- Linux下git diff对比两个文件夹
- git diff 的使用说明,是干什么的,怎么用!
- Android TransitionDrawable:过渡动画Drawable
- Spring 中ApplicationContext使用 <02>
- .net post url获取json
- JS获取IP、MAC和主机名的几种方法
- 关于 html append 为什么不是子级关系 $("#"+)
- Git:关于git diff 是和谁对比的问题
- Hadoop 参数小结
- 修改Android MTK 开关机动画 log
- QT使用插件QAxWidget
- 关于CTE的使用,以及TOP/ORDER BY的执行顺序
- Linux---uptime
- 解决Ubuntu下genymotion出现"Unable to load VirtualBox engine"问题
- Nginx初级部署
- Images的标准用法