git仓库忽略所有.dll文件


88

标题说明了一切。我正在尝试将我的NuGet软件包添加到存储库中。.dll文件以外的所有文件都被检测到。

gitignore文件不包含对* .dll的引用。.dll文件在整个存储库中的任何位置都不会被识别。信息/排除也为空。

我还克隆了存储库(文件系统到文件系统,而不是从远程到文件系统)。在两台不同的计算机上也会发生此问题。

我可以手动添加.dll文件,但应该对其进行跟踪。为什么不对其进行跟踪?


26
什么git config --get core.excludesfile发言权?
Antony Hatchkins

2
同样,使用git跟踪二进制文件通常也不是一个好主意,因为git无法有效地计算修订之间的差异,因此如果占用空间,保留所有版本将是浪费。如果dll是动态生成的,最好在git中忽略它们。如果不是,则最好使用其他同步机制(例如rsync)。
Antony Hatchkins

这些是我要添加到git中的NuGet软件包。我不使用的NuGet的“包还原”功能,所以我需要在文件夹中检查了整个包。
保罗·克诺夫

Answers:


121

你有两种~/.gitignore_global或者~/.gitignore其中也可以列出这些文件模式你的home目录?

参见https://help.github.com/articles/ignoring-files


6
鉴于他正在使用dll文件,因此他在Windows平台上,所以〜表示Windows 7下的$ HOMEDRIVE $ HOMEPATH
Antony Hatchkins

9
原来是问题所在。我没有添加此全局忽略文件。它会突然冒出来的任何原因是什么?现在,我想到了,我最近安装了SourceTree(来自Atlassian)。也许是罪魁祸首?
Paul Knopf

6
我遇到了同样的问题,在此之前我还安装了SourceTree。因此,我猜想是SourceTree添加了全局忽略文件,因为它过去曾经可以正常工作。
Andreas Krebs

8
编辑:确定,它是由SourceTree 链接
Andreas Krebs

31
我不得不跑git check-ignore出来找出文件在哪里。在〜/ Documents / gitignore_global.txt上找到它
Matt Canty

97

如果您使用SourceTree和默认设置,则默认情况下它将忽略所有DLL ... Tools => Options => Git,然后“ Edit File” ...在.dll =>“#. dll” 之前添加“# ”。 。 保存并关闭。

然后对于Windows资源管理器,在您的packages文件夹中,打开一个GitBash终端,然后输入“ git add”。然后让它工作,回到SourceTree中,等待一秒钟,所有那些丢失的包DLL都会显示出来,供您提交和推送。


13
SourceTree用户的正确答案;)
jmpcm 2015年

知道全局忽略列表,在GUI中找不到它。。谢谢!
Christoph'Apr

工具=>选项=> Git / Mercurial全球忽略列表...如果您没有,可以在其中创建并指向它。
KevinB

2
文件位置:〜/ Documents / gitignore_global.txt
James McCormack,

这适用于源代码树,但对于Visual Studio,忽略项不在我的gitignore中。我使用源代码树执行此任务的任何方法
Demodave '18

11

我可以手动添加.dll文件,但应该对其进行跟踪。为什么不对其进行跟踪?

不,除非您已添加它们,否则不应跟踪它们。仅跟踪已经添加和提交的文件;这就是“跟踪”的意思。

尝试通过手动添加其中一个,git add它会告诉您为什么忽略它们,并提示您仍然使用git add -f添加文件。


我做了一个“ git add'/ packages'”,它没有检测到.dll。然后,我使用-f并将其添加。我发现了问题。“ * .dll”在我的全局忽略范围内。不知道这种全球性忽视来自何处。
Paul Knopf

2

您需要明确告诉git跟踪任何新文件。

  1. 运行git add filename以将文件添加到git的索引。

  2. 运行git commit以提交索引中的更改。

git status 还应显示未跟踪文件和目录的列表。

如果要列出仓库中所有被gitignore忽略的文件,可以运行:

git ls-files . --ignored --exclude-standard --others

如果要列出存储库中所有未跟踪的文件:

git ls-files . --exclude-standard --others

2
我必须“ git add -f”来跟踪实际上被忽略的文件。原来这是全局忽略文件中的一个条目,有些应用程序在不知不觉中将其放置在其中。
Paul Knopf

2

我遇到了类似的问题。我无法将包目录中的.dll文件添加到我的git中,然后我发现gitignore_global.txt文件作为sourcetree自动将其添加为全局git忽略设置。我从gitignore_global.txt文件中删除了* .dll,它对我来说很好用。

gitignore_global.txt文件的位置如下

C:\ Users \ XXXX \ Documents \ gitignore_global.txt,或者您可以从sourcetree TOOL => OPTION => GIT选项卡中找到它,并找出全局忽略列表


1

就我而言,.gitignore文件中没有.dll引用,并且我没有全局文件。但是,在.git子目录中,我找到了一个名为ms-persist.xml的文件。我关闭了Visual Studio的所有实例,然后将缺少的.dll手动添加到该文件中。当我重新打开Visual Studio时,.dll显示为需要检入。我检入了这些文件,现在我很高兴...


0

您在全局位置.gitignore.gitignore子目录中的其他文件-相对于项目的根目录。

在Linux Systems和MacOS上,全局git-ignore最有可能在您的家庭中 ~/

~/.gitignore_global

在Windows上,可能在您的用户目录中。您的本地用户(您可以通过键入ECHO %USERPROFILE%whoami在命令行中找到。

如果不存在,则肯定.gitconfig存在a 。在此处查找gitignore的位置(例如,用户的Documents文件夹)。

编辑git config --list --show-origin用于获取有关git-settings及其对应文件位置的详细信息。


0

我知道这个问题已经很老了,但是我为将来可能会访问这个问题的其他人补充。您可以按照上面提到的答案去修改全局忽略文件,但这会影响所有的git存储库。相反,如果您希望使用更精细的方法,则可以在单个项目.gitignores中仅排除特定的DLL或特定的文件夹。这将覆盖所有忽略设置,并强制由git检测和处理文件。我认为这是一种更好的方法。

.gitignore(针对您的特定项目)

# Custom ignores
!*.dll
# or
!My.specific.dll

# rest of .gitignore
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.