git add。 - >使用新文件仍然“无需提交”

问题描述 投票:41回答:7

我正在与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$ 
git add init
7个回答
85
投票

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

第一次尝试

git add --all

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

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

cat .gitignore

删除那些导致您的文件被忽略的列表。例如,有一个只有*的条目?

接下来尝试:

git add --force

然后尝试git status

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

rm -rf .git

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


41
投票

由于我多次经历过类似的问题,我只想补充一点,你应该仔细检查你是否正在尝试添加并且当前位于项目的根文件夹中。


10
投票

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

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

方便的命令:

find . -name '.git' -type d

4
投票

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

git stash
git stash apply

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

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


1
投票

在我的例子中,由git目录嵌套在当前git目录中引起:

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

1
投票

出于某种原因,当我在Google云端硬盘文件流中的目录中存储了很长一段时间后,Git对我来说效果很好。昨天,我遇到了同样的问题。 git add .不会报告任何事情,但是git add <some explicit filename>没有任何问题。我将目录移动到我的本地硬盘驱动器(关闭Google Drive File Stream),git add .选择了所有挂起的更改。请注意,当目录仍在Google云端硬盘文件流中时,将目录设置为“可脱机使用”无效。


0
投票

补充quux00的.gitignore答案,我发现我的目录没有被跟踪,因为我的构建管理器(Maven)的临时'build'目录。 Maven在构建我的程序时为.gitignore添加了“build”,因此我的目录(巧合地命名为“build”)没有被跟踪。这是通过重命名我的'build'目录来解决的。

© www.soinside.com 2019 - 2024. All rights reserved.