为什么被忽略的文件没有被忽略?

6

我知道此类问题的变体已经被提出和回答过了,所以首先我想通过自己的研究来展示我没有重复问题

  1. git ignore实际上不是.gitignore文件:.gitignore is not working
    • 我的文件名为.gitignore,而我已将Windows设置为显示所有文件类型的完整文件名。(该文件的名称为Unity.ignore,重命名后问题未解决)
  2. .gitignore文件是在跟踪文件之后添加的,你需要先取消跟踪。像这样:.gitignore not working in github for mac program
    • 不,.gitignore是添加到一个空的repo中的。确保已经commit。
  3. .gitignore文件未正确放置。
    • 现在我对Linux和bash并不是很熟悉,但有人告诉我要把它放在根目录,我认为我已经做到了,在这里

前两个是我看到人们使用.gitignore文件时遇到问题的主要原因,但这不是我遇到问题的地方。我有99%的把握认为最后一个也不是问题所在。

在告诉git忽略我的Library和Temp文件夹后,任何来自temp和Library的文件仍然会显示在GitHub客户端的Windows版本准备提交时: 链接到图片,因为Imgur出现了问题

编辑: 使用SmartGit查看repo时出现相同问题

这是我的.gitignore文件

# =============== #
# Unity generated #
# =============== #
[Tt]emp/
[Oo]bj/
[Bb]uild
/[Ll]ibrary/
sysinfo.txt
*.stackdump

# ============================================= #
# Visual Studio / MonoDevelop / Rider generated #
# ============================================= #
[Ee]xported[Oo]bj/
.vs/
/*.userprefs
/*.csproj
/*.pidb
/*.suo
/*.sln*
/*.user
/*.unityproj
/*.booproj
/.idea*/

# ============ #
# OS generated #
# ============ #
.DS_Store*
._*
.Spotlight-V100

感谢您提前为我提供帮助。这让我十分困扰。

我已经了解到这个问题与Unity创建的文件夹有关,并且某种程度上搞乱了忽略/跟踪的顺序,我正在进行调查。


你曾经在将Library和Temp文件夹添加到.gitignore之前(错误地)将它们添加到源代码控制中吗?此外,你是否尝试过创建一个新文件(例如txt文件),将其添加到.gitignore中并检查它是否被忽略?(你不需要提交.gitignore就可以看到它的工作原理) - Roberto
最终我找到了问题所在。我的仓库索引并不是“新鲜”的,而是跟踪了早期同一项目迭代中的文件。最终,事实上是问题2,尽管我认为我已经小心避免了这种情况。 - TheLemur
4个回答

5
我从未使用名为Unity.gitignore的.gitignore文件。也许我是错的,但我认为文件名必须字面上为.gitignore,即没有任何后缀。 【编辑】:
您可以通过以下命令检查git的忽略规则:
git check-ignore -v MY_FILE_NAME

需要检查的另一个点是.gitignore_global文件,但我认为这不会解决你的问题。

最后一个要考虑的是Unix和Windows:你是否有适当的行结尾,特别是在Windows下工作时?

例如,您可以查看我的Unity项目之一,位于GutHub上:https://github.com/kayy/BundleVersionChecker。这绝对有效。


很奇怪,因为这就是 Git Hub 在询问需要哪种 .gitignore 文件时生成的方式。现在正在测试它。编辑:不,这并没有解决问题。 https://gyazo.com/87aba138a5ea117bea51483c447f5352 - TheLemur
也许这是为了避免覆盖手写的 .gitignore 文件而进行的操作 - 这只是一种假设。 - Kay
可能吧 :/ 但是给所有来自 git hub 的用户提供一个“有缺陷”的 .ignore 文件似乎很奇怪.... 我一定做错了什么,但我就是看不出来 :/ - TheLemur
我刚刚使用了一个测试存储库进行尝试。只要我将现有的 .gitgnore 重命名为 Unity.gitignore ,它就停止工作了。这是在 Mac OS 下,但我预计在 Windows 下行为相同。 - Kay
谢谢你测试了一下,但这有点离题了,因为我也在我的端上做出了更改,但没有效果 :/ - TheLemur
能够查看项目实际上有点帮助。我现在认为我已经找到了它的轨迹。除了我仍然不知道问题的根源是什么。谢谢! - TheLemur

3

该文件不能被命名为Unity.gitignore,它必须被命名为.gitignore。将其重命名为.gitignore即可生效。


这似乎并没有解决问题: https://gyazo.com/87aba138a5ea117bea51483c447f5352文件名为Unity.gitignore的文件也是在创建存储库时由GitHub默认创建的.ignore文件。 - TheLemur

2
最终我找到了问题所在,看起来是问题二,尽管我认为自己已经小心翼翼地避免了这个问题。我的存储库索引不是“新鲜的”,而是跟踪了一个早期版本的同一项目中的文件。
解决方案是删除.gitignore并取消跟踪所有文件。我认为作为替代方案,我可以创建一个新的repo,并仅上传资产文件夹和项目设置文件夹以及我已经拥有的.ignore文件。
所以,没错,就是橡皮鸭子(译者注:指在向别人解释问题时,通过向玩具橡皮鸭子解释问题,明确自己的思路和问题所在)。

0

检查您的.gitignore文件是否包含不需要的文本,始终在Visual Studio Code中编辑.gitignore文件,而不是使用textedit或任何其他编辑器。此外,还要检查文件扩展名。


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