为什么 "git status" 显示太多未跟踪的文件?

11

答案在底部。

我试图查看 git_test2 目录中我文件的 status,其中包含 3 个名为 test1.txttest2.txttest3.txt 的文件。

这是我输入到终端的内容:

cd Desktop
cd git_test2
git status

一切都很好,直到执行git status命令。它应该只显示给我三个未跟踪的文件,但是终端返回了这段文本:

On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

new file:   ../../AndroidStudioProjects/Sunshine/app/src/main/res/layout/list_item_forecast.xml
new file:   ../../Library/Preferences/AndroidStudio1.2/options/fileEditorProviderManager.xml
new file:   ../../Library/Preferences/AndroidStudio1.2/options/git.xml
new file:   ../../Library/Preferences/AndroidStudio1.2/options/other.xml
new file:   ../../Library/Preferences/AndroidStudio1.2/options/runner.layout.xml

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)

modified:   ../../AndroidStudioProjects/Sunshine/app/src/main/res/layout/list_item_forecast.xml
modified:   ../../Library/Preferences/AndroidStudio1.2/options/runner.layout.xml

Untracked files:
  (use "git add <file>..." to include in what will be committed)

../../.CFUserTextEncoding
../../.Rsupport/

最后一行之后有很多行,都和最后一行一样(红色)

我刚刚找到了原因: 我只需要 git init,现在它显示了我期望的内容。谢谢大家!


1
在使用 Git 的同一目录下运行 pwd。它返回什么? - Nick Volynkin
1
@NickVolynkin /Users/ishayfrenkel1/Desktop/git_test2 - Ishay Frenkel
这只是解决方案的一半。请查看答案。 - Nick Volynkin
你的意思是 git status 而不是 cd git status 吗? - M.M
@MattMcNabb,是的,在论坛中那只是一个打字错误。 - Ishay Frenkel
3个回答

15

为什么有那么多文件?

Git仓库只是位于项目目录中的.git/目录(文件夹)。就像这样:myproject/.git/

如果当前目录下没有Git仓库,Git会在父级目录、父级目录的父级目录一直到根目录中寻找

因为您的路径是/Users/ishayfrenkel1/Desktop/git_test2,所以在此路径中应该存在一个Git仓库。

new file:   ../../Library/Preferences/AndroidStudio1.2/options/git.xml

新建的文件路径至少比/Library高两级(即/Library/Users/ishayfrenkel1/Library)。这意味着你已经初始化了一个git仓库:

  • 在你的主目录下:~/,在OSX上是/Users/<username>/,在Linux上是/home/<username>
  • 或者在根目录/中,它是所有目录的父目录。

如何发生的?

很可能你打开了终端,并输入了git init。终端默认在你的主目录中打开,那就是新建仓库的地方。

现在该怎么办?

搜索并删除它。以下命令中的一个应该可以无错误运行。然后就找到它了!

ls /.git
ls ~/.git

现在使用以下命令删除仓库:

rm -rf ~/.git

删除什么? 我在git init之后才执行了git add - Ishay Frenkel
1
我猜你在根目录下初始化了一个Git仓库。这就解释了为什么你的文件系统中有那么多未跟踪的文件。 - Nick Volynkin
这篇文章刚刚获得了“优秀回答”徽章,所以我加入了更多的友好内容。 :) - Nick Volynkin

0

看起来你的.git文件夹不在你的产品中,而是在它的上一级目录。所以当你在项目中执行git status命令时,如果你看到../../,那就意味着你在 Git 仓库的第二层。

也许你应该重新克隆该仓库并检查你的 Git 结构。


0

正如您所见,文件路径以../..开头。 Git状态始终显示当前存储库中的所有更改,而不仅仅是当前目录中的更改。正如您所见,它实际上显示了存储库中的更改,其中深度至少为2级。但是没有test1.txt文件。

因此,请使用pwd命令检查您是否在正确的目录中(也许您当前在另一个存储库中)。


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