我需要澄清文件是如何被忽略的,.gitignore文件[关闭]

ruyhziif  于 2023-03-21  发布在  Git
关注(0)|答案(2)|浏览(136)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

3天前关闭。
Improve this question
我已经使用Git 5年了,我知道.gitignore文件,无论是在GitHub还是Azure DevOps上创建新的Git存储库,我都一直在使用它。
但是我遇到了一个新的情况,我试图将几个TFVC存储库从我们的旧TFS服务器迁移到GitHub。我一直在关注博客文章Migrate From TFVC To Git – 5 Simple Steps。我在第3步添加了.gitignore文件,正如博客文章所说的那样。然而,TFVC存储库中有几个DLL,PDB,OBJ等文件。我知道我在Visual Studio中使用的.gitignore文件将阻止添加新的DLL,但我不知道当开发人员构建应用程序时会发生什么。例如,假设有一个名为File1.dll的DLL,在build文件夹中,现在在新的Git仓库中。重建应用程序,生成新的File1.dll,是否意味着当用户提交时,File1.dll的新示例将被添加到仓库中?或者.gitignore文件会忽略任何新添加的DLL,即使新DLL的名称与Git存储库中已跟踪的DLL相同?

yc0p9oo0

yc0p9oo01#

你担心这一点是正确的:
重建应用程序、生成新的File1.dll是否意味着用户提交时File1.dll的新示例将添加到repo中?
正如Jay在评论中提到的,一旦这些文件被跟踪,它们在.gitignore文件中的事实就不相关了。这些文件将继续显示为每次有人重建时修改过的文件,直到它们被提交为删除,或者手动告知在每个开发人员的本地存储库中取消跟踪。
你有几个选择:
1.进行一次新的提交,删除TFVC存储库中所有不应该被跟踪的文件。
1.使用git-filter-repo浏览整个仓库,删除所有你不需要的东西。你发现的那些dll是明显的候选者,但可能还有更多的东西。
请注意,迁移一个仓库是修复它的最佳时机,因为在不影响该仓库的所有用户的情况下,稍后重写一个Git仓库要困难得多。除了那些你已经确定的构建工件之外,另一个常见的修复是之前错误添加的文件,后来删除了,这些文件只是坐在历史记录中占用空间,没有任何有用的原因。如果你决定尝试git-filter-repo,从git filter-repo --analyze开始,查看要过滤掉的潜在候选项列表。More info here.

**旁注:**通常从整个历史中删除未使用的二进制文件具有显着减少repo整体大小的额外优势。

rggaifut

rggaifut2#

存储库不是您的工作目录;它是工作目录中的.git目录。(这些是默认值,可以手动更改,但原理是一样的。)
一个文件在你的工作目录中并不意味着它在你的仓库中(这类文件被称为 untracked)。一个文件在你的仓库中并不意味着它在你的工作目录中。(这样的文件可能只存在于你当前 checkout 的分支之外的分支中。)
.gitignore的目的是引发各种命令(git addgit status等)来忽略某些未跟踪的文件。(.c文件被跟踪,通过编译.c文件按需创建的.o文件则不是)。

  • 为了避免意外地向存储库中添加类似git add .的文件
  • 避免git status提醒您文件未被跟踪。

具体来说,.gitignore * 不 * 应用于已经在您的存储库中的文件的更改。在您的示例中,DLL文件可能是错误添加的。(Git旨在跟踪 * 源 * 文件,构建过程的输入。DLL文件不是构建过程的输入,而是 * 输出 *。)

相关问题