Git将“未更改”文件添加到舞台

Posted

技术标签:

【中文标题】Git将“未更改”文件添加到舞台【英文标题】:Git adding "unchanged" files to the stage 【发布时间】:2013-09-07 04:21:07 【问题描述】:

对于我正在进行的项目,我想使用:

git add . -A

将一些文件添加到舞台。问题是 Git 认为这些文件与上次提交相比没有变化,因此它们被忽略了。但是,我亲自更改了文件,但 Git 仍然认为该文件未更改。

如何“强制”将该单个文件添加到我的存储库中?

【问题讨论】:

万一,文件被 gitignored 了。查看该文件是否有 .gitignore 文件和其中的条目。 不,文件类型不在我的 .gitignore 中。 有一个老问题:***.com/questions/9707562/…。你试过这些吗? 我的问题和他们的不同,当我删除或重命名文件时,Git 会识别,但我需要它始终具有相同的名称。我只是无法让 Git 添加我的文件,因为它认为文件没有改变。即使文件真的没有改变,Git 仍然应该让我添加它并最终提交它。 不,我认为它不会那样做。因为 git 提交是内容的哈希,如果当前更改哈希到与头部相同的哈希值,它会认为没有更改。 【参考方案1】:

检查您的 .gitignore 文件,必须有一些与此文件匹配的模式,该模式将文件排除在暂存之外。 或者您可以使用git add . -f 强制添加这些文件。

【讨论】:

不,.gitignore 仅在文件被检测为未跟踪时才会影响文件 - 即,当它们尚未在存储库中时。一旦文件在存储库中,.gitignore 将不适用于它。【参考方案2】:

似乎为该文件设置了assume-unchanged-bit。设置该位后,git 将不再查找该文件的更改。通过键入取消设置:

git update-index --no-assume-unchanged <file>

之后,git statusgit add 应该会检测到更改的文件。

【讨论】:

以上是关于Git将“未更改”文件添加到舞台的主要内容,如果未能解决你的问题,请参考以下文章

(Git) 如何推送未做任何更改的文件?

未更改的文件上的 Git 合并冲突

在 git 中切换分支时,如何让 Emacs 恢复所有未更改的缓冲区?

如何递归地将目录复制到另一个目录并仅替换未更改的文件?

仅在项目发生更改时添加编译时间戳 (C)

Spring Boot 应用程序未更改