.gitignore 文件指定未跟踪的文件。 .gitattributes 根据路径定义属性。 它们是Git的配置文件。
在Visual Studio中,bin和obj文件夹用于存储编译器生成的输出(请参见此处)。由于这些输出文件是由编译器生成的,因此您不希望在源控件中跟踪它们。
如果您的项目需要引用一些第三方dll,则最好的方法是引用它们作为Nuget包,如果这些dll有Nuget包可用。 如果没有,您可以将它们放在bin或obj之外的文件夹中,以便在Git中跟踪它们。 您不应更改 .gitignore 文件来跟踪 bin 或 obj 文件夹。
.gitignore旨在从源代码控制中排除内容。例如,如果您有一个包含您的数据库连接字符串的文件在您的开发文件夹中,您不希望您的密码被检查到源代码控制中。将二进制文件检入存储库是一种不良做法。您应该使用依赖管理系统(如Nuget,Chocolately,Maven,npm等)来指定依赖项并下载它们。现在您正在执行的方式是将它们的多个副本检入多个项目中,而不能在一个地方进行管理。合适的依赖管理很可能是为什么默认版本的.gitignore会排除某些文件夹的原因。您还需要重新生成obj文件夹的所有内容。如果您有旧副本的时间戳会变得奇怪。每次进行纯净构建都意味着从没有编译过的artifact的新副本开始。
lib
的文件夹
lib
文件夹中添加引用bin
文件夹(正如其他人所提到的,您不应该这样做),也不要通过删除 .gitignore
和 .gitattributes
文件来实现。
.gitignore
包含一个文件列表,这些文件不应被添加到您的存储库中。 这些是不应与团队分享的文件,例如本地配置数据。 如果您提交了 .vs
目录中的 SQLite 数据,则会出现无数冲突,并且由于 Visual Studio 已锁定该文件,因此无法进行拉取操作。
.gitattributes
包含一组配置,特别是针对行结尾符号的设置。 所有开发人员必须同意设置才能在存储库中存在,否则将因空格导致冲突。bin
目录中,请恢复您的 .gitignore
和 .gitattributes
文件。 然后,使用否定模式在 .gitignore
中显式列出它们:
!bin/foo.dll
但是 - 如其他人所评论的那样 - 这仍然是个坏主意。