什么';这是一个很好的文件路径,可以强制。gitignore不可以忽略包文件夹中的DLL吗?
所以我在.gitignore文件中得到了这个路径:什么';这是一个很好的文件路径,可以强制。gitignore不可以忽略包文件夹中的DLL吗?,git,gitignore,Git,Gitignore,所以我在.gitignore文件中得到了这个路径:!packages/*/lib/*/*.dll,这将阻止git忽略具有特定.NET版本的特定dll版本的任何内容。但是,像Elmah这样的东西没有不同的版本(Elmah当前版本的路径类似于packages\Elmah.corebrary.1.2.2\lib\Elmah.dll) 我知道如果我添加!packages/*/lib/*.dll它将捕获类似的内容,但我不希望为每个稍有不同的路径添加新路径 我已尝试添加!包/*/lib/***.dll,但这
!packages/*/lib/*/*.dll
,这将阻止git忽略具有特定.NET版本的特定dll版本的任何内容。但是,像Elmah这样的东西没有不同的版本(Elmah当前版本的路径类似于packages\Elmah.corebrary.1.2.2\lib\Elmah.dll
)
我知道如果我添加!packages/*/lib/*.dll
它将捕获类似的内容,但我不希望为每个稍有不同的路径添加新路径
我已尝试添加!包/*/lib/***.dll
,但这似乎不起作用。有什么想法吗?避免在Git中对二进制文件进行版本控制
为什么不忽略DLL,句号?Git不太适合对二进制文件进行版本控制,因为每次更改版本时,它都必须保留每个版本的完整副本,这会导致repo随着时间的推移变得更大,从而使它们更难克隆,而且可能也会减慢其他Git操作的速度
此外,像GitHub这样的远程回购主机可能会限制回购的规模。(我的重点):
为了获得最佳性能,我们建议每个存储库的容量保持在1GB以下。如果将大型文件(通常是二进制文件)保留在存储库之外,则很容易保持此限制。如果您的存储库超过1GB,您可能会收到来自支持部门的礼貌电子邮件,要求您减小存储库的大小,使其恢复到1GB以下
尝试改用NuGet包还原
正在使用?如果启用它,您只需对指定要使用哪个版本的Elmah的xml配置文件进行版本设置,如果您还没有,您的项目将在构建过程中下载它
另见
关于gitignore**
**
语法是唯一的,因此如果您使用的是早期版本的Git,这可能就是它不起作用的原因。您可以通过运行git--version
来检查您的版本。一个好的答案是查看您的全局gitignore文件(gitignore\u global.txt
)。如果您在Windows计算机上工作(我假设您是),您可能希望签入我的文档。如果已安装SourceTree,请同时签入Atlassian的程序文件。您很可能会看到*.dll
在这些文件中。去掉这个,你应该是个好人
现在,我知道最重要的是你不应该在你的git存储库中包含DLL。纸杯蛋糕提出的每一点都是有效的。然而,实际上,大小问题实际上只适用于频繁更改的DLL。由于整个解决方案中obj
和bin
文件夹中的DLL在几乎每个构建中都会发生变化,因此对于git来说,这将是一场噩梦。但是,包存储库的更改相对较少。即使在高边缘的情况下,它们也不是什么威胁:如果你有20个包,每个包都有一个100KB的DLL,并且每个包都运行了10次更新,那么1GB限制的总量将达到20MB—2%。相反,如果您决定不包括DLL,就像纸杯蛋糕和其他许多人所说的那样,那么这意味着您必须处理以下两种后果之一:
bin
和obj
中的DLL,并自然添加它们意味着您可以通过Visual Studio中的NuGet更新包,git将查找这些新包,删除旧包,您的解决方案建立在签出的基础上
这样做的副作用非常重要:这意味着您必须确保您的存储库(以及克隆到您机器上的每个存储库)必须在其存储库级别中包含bin
和obj
。如果您不这样做,那么那些频繁更改的DLL将进入您的回购协议,它们很可能会占用大量空间。另一方面,这些文件夹中的内容太多了,您应该已经忽略了——调试包等等——希望您已经做到了。事实上,您为.NET/Windows项目找到的许多预先配置的.gitignore
文件已经包含这些文件夹的忽略
最后,虽然在git存储库中不包含DLL的原则是好的,但您不能忘记,对于频繁更改的
DLL来说,这是最重要的,而且为了一致性、易构建性和效率,您的依赖项肯定应该包含在项目中。您使用的是哪个版本的git<代码>**是。有几件事:1。我们使用的不是Github,而是Stash(Atlassian版本的Github Enterprise)。2.我过去在nuget软件包还原方面有过不好的经历。3.我们使用了相当多的第三方DLL,这些DLL无法通过nuget获得。诚然,这些将不在packages文件夹中,但总体上“不要将DLL放在git中”不会有多大帮助。@PiersKarsenbarg如果您经常升级DLL库,尽可能避免在git中对它们进行版本控制是您的最大利益。如果这是您关心的问题,那么如果您能描述一下我们过去在NuGet package restore方面遇到的问题,将会有所帮助。好的,等等,事实上,还有另一个解决方案,你可以继续并对它们进行版本化,但最终你可能需要修改