“已提交”和“未修改”是否相同?

时间:2019-04-27 05:15:38

标签: git

我从https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F读到了有关Git中的三个国家的信息 它在此处表示Git具有文件可以驻留的三个主要状态 已提交 修改和< em>上演。

然后,我还从https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository中了解了两种状态:已跟踪或未跟踪 此处表示工作目录中的每个文件可以处于以下两种状态之一:已跟踪或未跟踪。跟踪的文件是上一个快照中的文件;它们可以是 未修改 修改分段

三个州中提到的状态与被跟踪文件的子状态是否相似? 已提交未修改相同吗?

这些图像显示它们是相同的吗?

The lifecycle of the status of your files

The three file states for Git: modified, staged, and commited

2 个答案:

答案 0 :(得分:0)

很容易理解*,如果您使它们更加明确,这两个类别就是同一件事。


“已提交”是指

  

正好已落实(暗示“ ...此后未进行任何其他操作”)


“未修改”是指

  

自上次提交以来未修改的


* (基本上回答标题问题,但请参阅torek的答案以获取宝贵的信息)

答案 1 :(得分:0)

Commit c3e7fbc (May 2005, Git v0.99)是第一个使用“未修改”的实例,它说明“未修改”文件是diff的候选文件,即使是重命名的文件也是如此:

  

[PATCH]进行大修,添加了复制检测的另一半。

     

此补丁扩展了diff-cachediff-files,以在-C(复制检测)生效时将未修改的文件也报告给diff-core,因此未修改的文件也可以用作源候选人。

这与第一次出现的“未提交”一词不同,后者表示“未提交”是commit 219ea3a, Sept. 2006, Git v1.5.3-rc0

  

gitk:将本地未提交的更改显示为伪提交

     

如果存储库中发生局部更改,即git-diff-index HEAD会产生一些输出,则可以选择在图形中显示一个额外的行作为HEAD提交的子项(但带有红色圆圈,表明它是不是真正的提交)。
  首选项窗口中有一个复选框,用于控制gitk是否执行此操作。

它包含如下注释:

# tree has COPYING.  work tree has the same COPYING and COPYING.1,
# but COPYING is not edited.  
# We say you copy-and-edit COPYING.1;
# this is only possible because -C mode now reports the unmodified
# file to the diff-core.

在处理跟踪元素时,“未提交”仍然是更通用的术语。
稍后,commit 6259ac6, Jul. 2008, Git v1.6.0-rc0提到:

  

文档:如何忽略跟踪文件中的本地更改

     

此补丁更仔细地说明了.gitignore仅涉及   未跟踪的文件,并向读者推荐

git update-index --assume-unchanged
     

需要忽略已跟踪文件中未提交的更改。