git add。 - >仍然“没有提交”新文件

时间:2012-06-02 03:46:24

标签: git add init

我正在与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$ 

13 个答案:

答案 0 :(得分:79)

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

首先尝试

git add --all

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

接下来尝试查看你的.gitignore文件,如果你有一个文件(在你做git init的最高级别)。

cat .gitignore

删除导致您的文件被忽略的所有商家信息。例如,是否只有*

的条目

接下来尝试:

git add --force

然后尝试git status

如果这些都不起作用,我注意到git init的输出说“重新初始化”而不是“初始化”,所以有些东西可能搞砸了。如果您刚刚初始化它并且不介意丢失历史记录,请先删除.git目录:

rm -rf .git

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

答案 1 :(得分:37)

由于我多次遇到过类似的问题,我想补充一点,您应该仔细检查一下您是否正在尝试添加并且当前位于项目的根文件夹中< /强>

答案 2 :(得分:9)

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

在这种情况下,git希望您将其视为submodule。否则,只需删除.git(在目录中,而不是根目录),然后重试。

方便的命令:

find . -name '.git' -type d

答案 3 :(得分:4)

在我的情况下,我通过存储解决它,然后立即应用存储:

git stash
git stash apply

此序列将使回购与以前完全一样。在此之后,git add [file]正常工作。

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

答案 4 :(得分:1)

在我的情况下,是由于在当前git目录中嵌套git目录引起的:

[[25,46],[28,39],[49,49],[33,40] ...]
value : [[[46, 25],[39, 28],[49, 49],[40, 33], ...]

答案 5 :(得分:1)

由于某种原因,当我在Google云端硬盘文件流中的目录中存储了很长时间时,Git对我来说运行良好。昨天,我遇到了同样的问题。 from pyspark.sql import Row df = spark.createDataFrame([Row(UrlsInfo=[Row(displayUri="http://example.com", type="narf", url="poit"), Row(displayUri="http://another-example.com", type="narf", url="poit")], Type=2)]) df.createOrReplaceTempView("temp") resultDF = spark.sql("SELECT type, EXPLODE(UrlsInfo.displayUri) AS displayUri FROM temp") resultDF.show() +----+--------------------+ |type| displayUri| +----+--------------------+ | 2| http://example.com| | 2|http://another-ex...| +----+--------------------+ 不会报告任何要提交的内容,但是git add .可以正常工作。我将目录移到了本地硬盘驱动器上(脱离了Google Drive File Stream),git add <some explicit filename>提取了所有待处理的更改。请注意,当目录仍位于Google Drive File Stream上时,将目录设置为“可用脱机”无效。

答案 6 :(得分:0)

补充quux00的.gitignore答案,我发现我的目录没有被跟踪,因为我的构建经理(Maven's)临时&#39; build&#39; build& #39;目录。 Maven补充说&#39; build&#39;在构建我的程序时.gitignore,因此我的目录(恰好命名为&#39; build&#39;)未被跟踪。这是通过重命名我的&#39; build&#39; 。目录

答案 7 :(得分:0)

我刚才有这种情况。就我而言,这是文件(小写/大写)问题。 问题是-我修改了NuGet.config文件,此后,Visual Studio出于某种原因重新创建了该文件,但是名称为NuGet.Config(注意,不是.config,而是.Config

我找到的最简单的解决方法是将文件删除(实际上是将其移动到)另一个位置,然后完全不使用该文件来提交。 git status消息是

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

然后,我将文件复制回repo目录并提交,一切都按一开始就可以正常工作。

长话短说,就我而言,这是文件命名策略冲突。在Windows中,文件名中的大写/小写字符不起作用,但是对于UNIX起源的git命令,则不起作用。

答案 8 :(得分:0)

我发现发生这种情况的原因是完全不同的,这是完全正确的。 如果您不在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

答案 9 :(得分:0)

一一尝试git add <folder_name>

如果暂存第一个文件夹。尝试添加下一个文件夹。就我而言,我得到的一个文件包含一些问题。

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

答案 10 :(得分:0)

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

我花了几分钟来弄清楚这个...

答案 11 :(得分:0)

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

请确保位于项目的根目录,否则您可以使用任何子目录中的 git add --all 就可以了。

答案 12 :(得分:-2)

我在将新文件添加到现有的初始化git文件夹中时遇到类似的问题。 git add <filename>无效。对我有用的是git add .,我在Mac上使用bash 5和git 2.25。我希望这也会对其他人有帮助...欢呼。