不同版本的临时区域?

时间:2014-07-02 19:50:15

标签: git

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

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

3 个答案:

答案 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