我从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中了解了两种状态:已跟踪或未跟踪 此处表示工作目录中的每个文件可以处于以下两种状态之一:已跟踪或未跟踪。跟踪的文件是上一个快照中的文件;它们可以是 未修改 ,修改或分段。
三个州中提到的状态与被跟踪文件的子状态是否相似? 已提交和未修改相同吗?
这些图像显示它们是相同的吗?
答案 0 :(得分:0)
很容易理解*,如果您使它们更加明确,这两个类别就是同一件事。
“已提交”是指
正好已落实(暗示“ ...此后未进行任何其他操作”)
“未修改”是指
自上次提交以来未修改的
* (基本上回答标题问题,但请参阅torek的答案以获取宝贵的信息)
答案 1 :(得分:0)
Commit c3e7fbc (May 2005, Git v0.99)是第一个使用“未修改”的实例,它说明“未修改”文件是diff的候选文件,即使是重命名的文件也是如此:
[PATCH]进行大修,添加了复制检测的另一半。
此补丁扩展了
diff-cache
和diff-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
需要忽略已跟踪文件中未提交的更改。