我在某处读到每个git add
都是一个新快照。
因此,如果在文件X上,我进行了一些更改,git add
,更多更改以及另一个git add
,我如何才能看到第一次和第二次调用git add
之间的更改?
答案 0 :(得分:2)
你可能会查看旧版"添加"使用git fsck --full
,如" Git Internals - Maintenance and Data Recovery"。
这类似于" Recovering added file after doing git reset --hard HEAD^
"。
如果您已将对象添加到索引中(通过使用
git add
),会为该对象的状态创建一个blob - 但是没有树(因此,提交)引用它的对象。
这就是人们如何得到一个“晃来晃去”的方式。松散的目标文件,如果你运行git fsck
它将显示未引用的blob(git gc将删除这些类型的对象,如果它运行)。
所以你可以很容易地找到那些中间版本,因为没有文件 name 引用那些(因为没有树,只有blob):你必须看看他们的含量
答案 1 :(得分:0)
每个git commit
都是一个新快照。当您添加的更改已添加时,git add
没有任何跟踪功能。您必须在第一次添加后提交,然后使用git diff
查看已更改的内容(或者,在您已经进行了第二次添加后,git diff --cached
)。
答案 2 :(得分:0)
你读的是错的。 git add
只是将更改或新文件添加到暂存区域(也称为索引)。它们将被包含在下一个提交中,这可能是您正在谈论的快照。我不认为有一种方法可以显示后续git add
次呼叫后的暂存区域之间的差异。如果您提交了一些内容,您可以看到工作目录与上次提交git diff
之间的差异以及最后两次提交与git diff HEAD~1 HEAD
之间的差异。检查man git diff
。