提交git add后未暂存的更改

6
在运行git add .后,我为什么会在Changes not staged for commit中找到项目?
> git add .
> git st 

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#       modified:   bin/ls-- (modified content, untracked content)
#

这是在Red Hat 4.1.2-50上,使用了git 1.7.10


你使用的是哪个版本?你在哪个操作系统上工作? - William Seiti Mizuta
非常奇怪。这在我这里可以工作。使用 git add bin,它是否起作用? - William Seiti Mizuta
感谢@WilliamSeitiMizuta的回复。不是这个问题 - 我刚刚尝试了 git add bin ,但它仍然报告在“更改未提交”中的条目。 - Amelio Vazquez-Reina
我猜测git add .确实添加了文件,但在你的git st之前,该文件又以某种方式被修改了。我假设git stgit status <some flags>的别名或类似的东西。尽管当我测试这种情况时,我得到的是将文件列在两个不同的部分中,而不是你展示的(modified content, untracked content)指示器 - 不确定是否旧版本的git可能会以那种方式报告它... - twalberg
感谢 @twalberg - 我已经尝试过多次暂存和提交(明确使用 bin 或不使用),但我仍然得到相同的提示信息 "Changes not staged for commit"。非常奇怪。 - Amelio Vazquez-Reina
2个回答

12

尝试使用git add -A ,然后检查状态以提交


3

看起来,bin/ls是一个子模块

当你进入这个目录并运行git status时,你应该看到哪些内容被修改和未跟踪,并且你可以将其提交到子模块的基础存储库中。

之后,当子模块存储库的HEAD有新的提交时,你可以在主存储库中使用git add添加此更改并进行提交。


这种行为的原因是git仅在主存储库中保留对子模块特定提交的指针,只有当子模块的HEAD移动时,主存储库才会有可提交的更改。 - Rafał Rawicki
哇,好的,我认为你是对的,因为我在 /bin/ls-- 文件夹里看到了一个 .git 文件夹。奇怪的是,我很确定我从未将其添加为主存储库的子模块(即使用 git submodule add)。嗯。 - Amelio Vazquez-Reina
在主代码库中查找 .gitmodules 文件。 - Rafał Rawicki
嗯,主代码库中没有.gitmodules文件,但我相信你是正确的。 - Amelio Vazquez-Reina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接