【问题标题】:Practical Git example (git status does not show untracked/changed file)实用 Git 示例(git 状态不显示未跟踪/更改的文件)
【发布时间】: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 不关心更改日期,它只查看文件的内容。

标签: git git-status


【解决方案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 上
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2016-11-13
  • 2018-08-31
  • 2021-09-12
相关资源
最近更新 更多