我正在尝试实施NuGet Package Restore Issues的解决方法。
这涉及忽略层次结构中任何级别的所有包文件夹的内容。但是,不应忽略.targets文件(通常位于包文件夹的子文件夹中)。
例如:
.gitignore YourProject/ YourProject.csproj packages/ repositories.config Microsoft.Bcl.Build.1.0.7/ lib/ foo.dll tools/ Microsoft.Bcl.Build.targets
应仅包含文件:
Windows,git版本1.8.1.msysgit.1。
我已经在StackOverflow上阅读了几个答案,检查了手册页,并尝试了许多变种但没有成功。
这不起作用:
packages/*
!*.targets
也不是这样:
packages/*
!packages/**/*.targets
也不是这样:
**/packages/*
!**/packages/**/*.targets
更新
bin/
,必须继续有效。答案 0 :(得分:8)
没有“好”的方法(参见manpage作为证据),但是它周围有一个黑客。
忽略bat的packages/
的主要问题是,由于目录被忽略,git甚至不检查它的子目录。
此处的解决方案 - 您必须拥有2个gitignore文件。一个常规的,一个在packages目录中,如下所示:
# ignore all files
*
# do not ignore directories
!*/
# do not ignore targets
!*.targets
# do not ignore gitignore
!*.gitignore
新例子:
$ mkdir foo
$ cd foo/
$ mkdir foo
$ mkdir foo/bar
$ mkdir foo/bar/baz
$ touch foo/.foo
$ touch foo/bar/.foo
$ touch foo/bar/baz/.foo
$ touch regular.txt
$ touch foo/ignored.txt
$ touch foo/bar/baz/ignored-2.txt
$ cat foo/.gitignore
*
!*/
!*.foo
!regular.txt
!.gitignore
$ git add . && git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: foo/.foo
# new file: foo/bar/.foo
# new file: foo/bar/baz/.foo
# new file: regular.txt
#
答案 1 :(得分:1)
忽略路径的优先级很重要,我接受了。
我通过首先指定要保留的内容来修复此问题,然后忽略其余的包的内容。
在.gitignore
文件中,请确保您应该:
!packages/repositories.config
packages/
请参阅https://github.com/danyandresh/Research/commit/65291219a1c1fbcdb2216c686767e8c46451baa1
请注意,我的.gitignore
文件是Visual studio ignore list as found on github