Discuss / Git / 作者的 概念图 是 错的把

作者的 概念图 是 错的把

Topic source

作者的 概念图 是 错的把

stage 并不是 working directory 和 HEAD 之间的 临时枢纽,不能按照 "内存"、"购物车" 来理解 stage,否则你会很难理解 git diff、git diff --staged

stage 中拥有着 和 working directory 中一模一样 的 目录结构、文件内容

看 官网上的文章 就知道了:https://git-scm.com/blog 里面有 详细的 概念图

耳倾若幽

#3 Created at ... [Delete] [Delete and Lock User]

It's not technically a tree structure, it's a flattened manifest, but for our purposes it's close enough.
看了INDEX 介绍里面的一句话,也就是stage里面应该只是平面结构而不是树形把..

作者概念图是错误的!请大家不要被误导了,git diff 确实是比较当前文件和暂存区文件差异,什么是暂存区?就是你 还没有执行 git add 的文件!!!!! 而文章中说 add 之后文件放到暂存区是错误的!!!

可以实验一下 你修改 readme.txt ,不做 add 操作,然后 git diff 会显示文件做了那些改动,但是你 add 之后,git diff 就没有东西了

你add之后,隐藏的库文件就被更新成最新版了呀,然后diff当然没区别了啊!没区别是不是就什么都不显示了吧?我认为作者画的没错啊,add之后就是最终版本了,所谓再进行commit就只为了给版本变化添加注释和加指针吧!

zjsonic6

#6 Created at ... [Delete] [Delete and Lock User]

感觉你们说的都不对,官网pdf中文文档P27不是讲的很清楚吗?

git diff比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff --cached 命令。

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

暂存区的文件目录和最近一次git add之后工作区的文件目录是一致的,因此当你修改完文件使用git diff你可以看到工作区和暂存区的差异(此时暂存区是上一次add之后的目录,而工作区是你刚修改完的样子),使用git add加入新的修改,再git diff就不会有输出,因为暂存区被更新为最新的工作区目录。 git diff --cached同理,只是比较的是暂存区和分支里的内容差异(分支保持上一次git commit的目录)。

我同意楼上zjsonic6的说法

@浅滩上的小螃蟹:大言不惭,你说的根本不对,OK。

Wrandz

#10 Created at ... [Delete] [Delete and Lock User]

作者概念图是错误的!请大家不要被误导了,git diff 确实是比较当前文件和暂存区文件差异,什么是暂存区?就是你 还没有执行 git add 的文件!!!!! 而文章中说 add 之后文件放到暂存区是错误的!!!

可以实验一下 你修改 readme.txt ,不做 add 操作,然后 git diff 会显示文件做了那些改动,但是你 add 之后,git diff 就没有东西了

这段话是错的


  • 1
  • 2

Reply