Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git状态显示未跟踪的文件,尽管已忽略_Git - Fatal编程技术网

git状态显示未跟踪的文件,尽管已忽略

git状态显示未跟踪的文件,尽管已忽略,git,Git,我在git存储库中的.gitignore文件中有一些条目,但有些条目仍然显示为未跟踪的文件 my.gitignore文件中的重要部分: 但是,当我运行git status时,会显示: Untracked files: (use "git add <file>..." to include in what will be committed) .idea/ mypackage.egg-info/ mypackag

我在git存储库中的.gitignore文件中有一些条目,但有些条目仍然显示为未跟踪的文件

my.gitignore文件中的重要部分:

但是,当我运行git status时,会显示:

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

        .idea/
        mypackage.egg-info/
        mypackage/__pycache__/
        mypackage/schema/__pycache__/
        mypackage/schema/models/__pycache__/
        mypackage/tests/__pycache__/
        win_venv/
任何人都知道为什么会发生这种情况,或者我的.gitignore文件中的错误是什么


此问题与建议的不同,如图所示,文件未被跟踪。如果我创建一个新的虚拟环境venv,在.gitignore文件中有相应的条目,也会出现此问题。

请在终端中尝试git rm-r-cached.idea。它会禁用更改跟踪。

不是答案,只是进一步调试问题的建议列表

尝试从不同的shell运行git status:cmd.exe、powershell、git bash,看看这三种shell的行为是否相同

您还可以通过以下命令查看更多信息:

git status --ignored

git check-ignore -v [paths]
# 'check-ignore' only checks paths explicitly listed on the command line :
git check-ignore -v *
git check-ignore -v .idea mypackage.egg-info mypackage/__pycache__
有关此问题的更多详细信息:

最后:您还可以运行git add.idea/或者选择文件最少的文件夹?看看会添加什么。
您可以使用git reset.idea/

来还原这一点,这是一个棘手的例子,证明git在Linux上工作得更好。在这个非常特殊的案例中,问题是没有正确设置文件编码,因此.gitignore文件被作为二进制文件处理

感谢@LeGEC为我指出了正确的方向:当我在WSL控制台上做了一个cat.gitignore时,我发现有些东西是邪恶的,内容如下:

    I D E   s e t t i n g s
 . i d e a /

 #   B y t e - c o m p i l e d   /   o p t i m i z e d   /   D L L   f i l e s
 _ _ p y c a c h e _ _ /


有时,当您将文件/文件夹添加到.gitignore时,这些文件/文件夹仍将存在于您的存储库索引中

请按照以下步骤清除它:

第一步。首先提交所有更改,包括.gitignore文件

第二步。删除或清除您的回购,使用以下命令,包括点[.]

git rm -r --cached . 
您的存储库是干净的,git状态现在不应显示未跟踪的文件

这个。指示将取消跟踪所有文件

-缓存将仅从索引中删除文件

第三步。重新添加所有内容并提交

 git commit -a -m ".gitignore fix"

您的存储库是干净的,git状态不应显示未跟踪的文件夹

它们可能已被添加,尽管它们位于忽略文件中。这是否回答了您的问题?我使用的是Windows 10。这可能是个愚蠢的问题,但你的.gitignore在哪里?它位于常规NTFS文件系统文件夹中。我认为Git并不关心.idea文件夹。正如你发现的,Git不理解Windows UTF-16编码。其他文件也是如此,UTF-16编码将导致Git认为它们是二进制的…facepalm nice catch@ansfourtytwo谢谢你的回答。但是,事实上这不是我的问题。文件肯定没有添加,因此显示为未跟踪的文件。
 git commit -a -m ".gitignore fix"