当前位置: 代码迷 >> 综合 >> 关于Git仓库结构以及 `git diff`相关命令的理解
  详细解决方案

关于Git仓库结构以及 `git diff`相关命令的理解

热度:71   发布时间:2023-11-24 12:52:49.0

git statusgit diff

如果git status告诉你工作区中有文件被修改过,

git diff可以查看修改内容。

注:

1、如果git add <file>了后再git diff就看不到文件具体修改了哪里

2、git diff 比较的是**工作区文件(working directory)与暂存区文件(stage/index)的区别(上次git add 的内容) git diff --cached 比较的是暂存区文件(stage/index)与仓库分支(master)**里(上次git commit 后的内容)的区别

请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。

3、git diff HEAD -- <file> 可以查看工作区和版本库(repository)里的分支仓库中的文件的区别。

vim <file> | git add git commit git push

修改文件 | 工作区 ----》 本地库的暂存区 -----> 本地库的分支仓库 ----> 远程库

关于Git仓库结构以及 git diff相关命令的理解

1、Git仓库:

? 工作区(Working Directory)

? 版本库/本地库(Repository):

? 暂存区(stage)

? 分支仓库(master)

2、git diff相关命令

见顶部

实验例子(以read.txt为例):

  1. vim read.txt #创建read.txt文件,并输入内容:read first
  2. git diff #比较working directory 中和 stage中的区别------》应该是什么也没有,因为此时stage中为空
  3. git add read.txt #把read.txt的修改提交到stage中
  4. vim read.txt #修改read.txt文件内容,修改为:read second
  5. git diff #会指出不同,first 、second------》因为此时stage中记录了含first的那个txt
  6. git diff --cached #比较stage 中和 master中的区别------》应该是什么也没有,因为此时master中为空
  7. git commit -m "commit first" #第一次提交到master------》此时文件关键内容,工作区中:first;暂存区中:second;分支仓库中:second
  8. git diff --cached #应该是什么也没有,因为此时stage和master中都是second
  9. vim read.txt #文件内容修改为:read third
  10. git add read.txt #把read.txt的修改提交到stage中
  11. vim read.txt #文件内容修改为:read first,此时文件关键内容,工作区中:first;暂存区中:second;分支仓库中:third
  12. git diff HEAD -- read.txt #比较working directory中和 master中的区别------》结果会指出,first和third的不同
  相关解决方案