IndexDiff返回的已修改和已更改文件状态之间的区别是什么?

时间:2012-07-20 13:54:43

标签: git jgit

我发现只有:

//在repo中,在index中,内容diff =>变 //在索引中,在workdir中,内容不同=>改性

但我无法理解其中的区别?

3 个答案:

答案 0 :(得分:1)

查看类IndexDiff中的getter的javadoc:

/**
 * @return list of files changed from tree to index
 */
public Set<String> getChanged()

这些文件在树HEAD点(大多数情况下当前分支的顶端)和Git索引之间有所不同

/**
 * @return list of files modified on disk relative to the index
 */
public Set<String> getModified()

这些是磁盘上的文件(也称为工作树)和Git索引

之间不同的文件

答案 1 :(得分:0)

因为你没有得到任何答案,我给你一个开始。

首先,我认为:

之间存在差异
  • 工作目录:这是您正在处理的文件系统。修改文件时,文件系统上的文件已更改。通常,这是操作系统的工作,以使其保持最新。

  • 索引:Git用来知道发生了什么。那是Git内部机制来跟踪发生的事情。即使它对我来说有点模糊,它应该知道文件系统上的更改或你添加的更改(使用git add [-u]),或者你提交的更改(或所有更改)

    < / LI>
  • 存储库/本地副本:您可能拥有不同版本文件的不同位置。 Git使用哈希来保存关于它们的信息(但是如果你问这个问题,你应该知道它)

我知道Git的问题是处理仓库的大小,当仓库规模相当大时它会变慢。更准确地说,他们的团队正致力于减少更新Git对文件系统知识的lstat调用量(因此这意味着Git通常知道您何时修改工作目录中的文件)

我不知道你在看什么,但你可能会搜索git-update-index(我认为它是在你做git add时调用的),'Git lstat'或google上的这种东西。

而且,抱歉,但你的问题真的不明确:缩写太多,行太少。 'content diff'是否意味着您对内容运行diff命令或内容不同?你的符号不清楚,为什么使用//你可能列出项目,并且=>&gt;代表结果或其他任何东西。人们在回答之前花时间搜索文档,请花时间写清楚的问题。

我希望这会对你有所帮助

文森特

答案 2 :(得分:0)

在命令javadoc中没有太多详细说明。 我使用git status unit-tests来了解 git status 的确如何运作。

简而言之:

  

已修改 - 如果修改现有文件而不将其添加到索引

,则会获得什么      

已更改 - 如果您修改现有文件并拨打&#39; git add ...&#39;在它上面