Git add.-> 对于新文件仍然是“无需提交”

我正在与 Git 斗争,我似乎不能添加我的文件。我运行了 ls以显示文件在工作目录中,然后运行了 git add .git status,结果显示“无需提交”。

JJ-Computer:first_app JJ$ git init


Reinitialized existing Git repository in /Users/JJ/rails_projects/first_app/.git/


JJ-Computer:first_app JJ$ ls


Diary.txt README.rdoc config.ru log   tmp
Gemfile   Rakefile  db    public    vendor
Gemfile.lock  app   doc   script
README    config    lib   test


JJ-Computer:first_app JJ$ git add .


JJ-Computer:first_app Jenn$ git status


# On branch master
nothing to commit (working directory clean)


JJ-Computer:first_app JJ$
127941 次浏览

您的命令看起来是正确的(我已经这样做了很多次)。

第一次

git add --all

然后尝试 git status。我不认为这将解决它,但值得下一次尝试。

接下来尝试查看您的. gitignore 文件,如果您有一个(在您执行 git init的顶层)。

cat .gitignore

删除导致忽略文件的所有列表。例如,是否有一个条目只有 *

下一步:

git add --force

然后试试 git status

如果这些都不起作用,我注意到 git init的输出是“重新初始化”而不是“初始化”,因此可能出现了问题。如果您刚刚初始化了它,并且不介意丢失历史记录,那么可以通过删除。返回文章页面

rm -rf .git

然后重新执行上面的命令。如果这不起作用,将需要更多关于您的设置的信息。例如,您可能有一个全局。Gitignore 文件: 需要编辑的 ~/.gitignore_global(如果不需要,可以删除它)。

在我的情况下,我解决了这个问题的方法是先藏起来,然后立即使用这些藏起来的东西:

git stash
git stash apply

这个序列将保持回购完全像以前一样。在这之后,做 git add [file]工作正确。

(在 suse linux 下使用 git 版本1.7.12.4)

由于我已经经历了类似的问题多次,我只想补充说,你应该仔细检查,你正在尝试 当前位于项目的根文件夹中

如果其他人碰到这种情况,git 不添加目录的另一个原因是,可能在该目录中有一个 .git目录。

在这种情况下,git 期望您将其视为 子舱。否则,只需删除该 .git(在目录中,而不是根目录中)并重试。

简易指令:

find . -name '.git' -type d

作为对 quux00的 .gitignore答案的补充,我发现由于构建管理器(Maven)的临时“ build”目录,我的目录没有被跟踪。Maven 在构建我的程序时将‘ build’添加到 .gitignore,因此我自己的目录(巧合地命名为‘ build’)就不会被跟踪。通过重命名“构建”目录解决了这个问题。

在我的例子中,是由于在当前 git 目录中嵌套了一个 git 目录:

A1.java
B1.java
.git
someDirectory
C1.java
.git
cd someDirectoy
rm .git -rf

出于某种原因,Git 对我来说工作得很好,当我有回购目录在谷歌驱动器文件流相当一段时间。昨天,我遇到了同样的问题。git add .不会报告任何提交,但 git add <some explicit filename>工作没有问题。我将目录移动到我的本地硬盘驱动器(离开谷歌驱动器文件流) ,并且 git add .拾取我所有的挂起的更改。请注意,当目录仍在 Google Drive File Stream 上时,将目录设置为“可脱机使用”没有任何效果。

我刚才遇到了这种情况,我的情况是文件(小写/大写)的问题。 问题是——我修改了 NuGet.config文件,之后,Visual Studio 出于某种原因重新创建了这个文件,但名字是 NuGet.Config(注意,不是 .config,而是 .Config)。

我发现的最简单的修复方法是删除(实际上是移动)这个文件到另一个位置,并且根本不提交这个文件。git status的信息是

[deleted] NuGet.config
[deleted] NuGet.Config

然后,我复制我的文件回到回购目录和提交,一切工作,因为它应该在最开始。

长话短说,我的情况是文件命名策略冲突。在 Windows 中,文件名中的大写/小写字符并不重要,但对于源自 UNIX 的 git命令就不重要了。

我曾遇到过类似的问题,即向现有的初始化 git 文件夹添加新文件。git add <filename>不起作用。对我有效的是 git add .,我对 mac 使用 bash 5和 git 2.25。我希望这也能帮到其他人,干杯。

我发现了一个完全不同的原因,这是相当了不起的。 如果您不在 Windows 中,这可能不会影响您。 如果你看到你的文件在未上演的变化,. gitignore 永远不会是你的问题。 非常仔细地检查一些内容。您的文件是否同时存在已分阶段和未分阶段的更改?

git status
Staged changes
modified: source/abc.Ui.Tests
modified: source/def.Ui.Tests/def.UI.Tests.csproj
Unstaged changes
modified: source/abc.UI.Tests
modified: source/def.UI.Tests/def.UI.Tests.csproj

看到区别了吗? 很难发现。 Windows 不在乎大小写,但 git bash 在乎。

git rm -r source/abc.Ui.Tests
git reset source/abc.UI.Tests
git commit -m "Fixing capitalization"
git checkout source/abc.UI.Tests
git status
working clean tree

一个一个试 git add <folder_name>

如果第一个文件夹是阶段性的。尝试添加下一个文件夹。在我的情况下,我得到了一个文件包含一些问题。

如果直接运行 git add .而在某些文件中出现问题,git 将忽略所有问题。我不是专家,但这就是发生在我身上的事:)

这似乎有点愚蠢,但可以节省某人的时间: 检查文件是否已被跟踪和没有修改: git ls-files --error-unmatch <file>。如果跟踪文件,则此命令不应显示任何错误。

我只是花了几分钟想明白..。

我遇到过类似的问题,并且意识到我正在从 main 的子目录执行 git add .

确保处于项目的根目录,或者您可以从任何子目录使用 git add --all ,这样就可以了。

我的窗户有点问题。现有的解决方案没有一个指向我这边的错误。我重命名了这些文件,重命名,然后重命名为他们以前的文件名,然后重命名,一切都很好。