实用 Git 示例(git 状态不显示未跟踪/更改的文件)

Posted

技术标签:

【中文标题】实用 Git 示例(git 状态不显示未跟踪/更改的文件)【英文标题】:Practical Git example (git status does not show untracked/changed file) 【发布时间】:2022-01-24 00:09:09 【问题描述】:

我目前正在审查 Johan Abildskov 的 Practical Git,为即将到来的工作做准备。我遇到的第一个例子似乎是不可能的。

它是这样开始的:

$ ls
A B C D
$ git status
On branch master
nothing to commit, working tree clean
$ echo testing > A
$ git status
On branch master
nothing to commit, working tree clean

他是怎么走到这一步的?如果 A 未被跟踪,git 不会提醒他有关未跟踪的文件吗?如果 A IS 被跟踪,git 不会提醒他文件已更改吗?

我一直在绞尽脑汁,但我无法弄清楚您的存储库是如何达到这种状态的。

【问题讨论】:

也许他在.gitignore 中列出了A 更改前A的内容是什么?如果它已经包含单个单词“测试”git 将不会检测到更改。 git 不关心更改日期,它只查看文件的内容。 【参考方案1】:

我能想到几种可能发生这种情况的方法。

首先,您可以将配置选项 status.showUntrackedFiles 设置为 no(对于此 repo 本地或全局)。

其次,您可以将.gitignore 条目配置为忽略A

第三,正如 Timothy Truckle 在 cmets 中提到的,echo testing > A 用字符串 testing 覆盖 A 的内容。如果这是 echo 命令之前的内容,那么从 git 的角度来看,不会有任何变化(即,git status 中没有什么可报告的),因为文件的内容没有改变。

【讨论】:

奇怪的是他没有提到这两件事。可能是书上的错误。 @NaNCat:也许 - 或者他在说明其他一些奇怪的极端情况,例如当您使用稀疏结帐或带有 git update-index 的一些特殊标志时会发生什么(其中一个用于稀疏退房)。不看书很难说,我没有。 :-)【参考方案2】:

也许,你的 A 文件在 .gitignore 文件中。

【讨论】:

git 肯定已经初始化,否则它不会打印出它在分支 master 上

以上是关于实用 Git 示例(git 状态不显示未跟踪/更改的文件)的主要内容,如果未能解决你的问题,请参考以下文章

让 git status 显示未修改/未更改的跟踪文件?

如何摆脱 Git 子模块未跟踪状态?

使用 Git 检查脏索引或未跟踪文件

git学习记录

git 仅添加修改过的更改并忽略未跟踪的文件

git 仅添加修改过的更改并忽略未跟踪的文件