实用 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 状态不显示未跟踪/更改的文件)的主要内容,如果未能解决你的问题,请参考以下文章