Git 不同版本的暂存区?

Git 不同版本的暂存区?,git,Git,我在某处读到,每个git add都是一个新快照 因此,如果在文件X上,我做了一些更改,一个git add,更多更改和另一个git add,我如何看到对git add的第一次和第二次调用之间的更改?每个git commit都是一个新快照git add没有任何用于跟踪添加所做更改的功能。您必须在第一次添加后提交,然后使用git diff查看发生了哪些更改(或者,在您已经进行第二次添加后,git diff--cached)。您可以使用查看较旧的“添加”,如“”中所述 这类似于“” 如果您已将对象添加到

我在某处读到,每个
git add
都是一个新快照


因此,如果在文件X上,我做了一些更改,一个
git add
,更多更改和另一个
git add
,我如何看到对
git add
的第一次和第二次调用之间的更改?

每个
git commit
都是一个新快照
git add
没有任何用于跟踪添加所做更改的功能。您必须在第一次添加后提交,然后使用
git diff
查看发生了哪些更改(或者,在您已经进行第二次添加后,
git diff--cached
)。

您可以使用查看较旧的“添加”,如“”中所述

这类似于“”

如果您已将对象添加到索引中(通过使用
git add
),则会为对象的该状态创建一个blob,但没有引用它的树(因此,提交)对象
这就是获得“悬空”松散对象文件的方式,如果运行
git fsck
,它将显示未引用的blob(如果运行,git gc将删除这些类型的对象)


因此,您可以很容易地找到这些中间版本,因为没有引用这些文件的文件名(因为没有树,只有blob):您必须查看它们的内容。

您阅读的内容是错误的
git add
只是将更改或新文件添加到临时区域(也称为索引)。它们将包含在下一次提交中,这可能就是您正在讨论的快照。我认为没有一种方法可以显示后续的
git add
调用之后的暂存区域之间的差异。如果您提交内容,您可以看到您的工作目录与上次使用
git diff
提交的内容之间的差异,以及最近两次使用
git diff HEAD~1 HEAD
提交的内容之间的差异。检查
mangitdiff

你在哪里读到的?我想每次提交都是一个快照,但添加?我想不起来了。也许我只是记错了。既然这是正确的答案,我就把它记下来。不过,它也是相当“硬核”的,因此我学习了
git commit--amend
git rebase
并更改了我的工作流程,因此我不需要这些高级的“内部”命令。