2013-03-20 72 views
76

标题说明了一切。我正在尝试将我的NuGet包添加到存储库。除了.dll文件以外的所有内容都正在被检测到。git存储库忽略所有的.dlls

gitignore文件不包含对* .dll的引用。当位于整个存储库中的任何位置时,.dll文件不会被识别。 info/exclude也是空的。

我也克隆了仓库(文件系统到文件系统,而不是从远程到文件系统),没有运气。这个问题也发生在两台不同的计算机上。

我可以手动添加.dll文件,但它们应该被跟踪。为什么他们没有被追踪?

+21

什么'混帐配置--get core.excludesfile'说 – 2013-03-20 06:18:03

+1

?另外它通常不是ag ood的想法使用git来跟踪二进制文件,因为git无法高效地计算修订版之间的增量,因此如果空间不足,所有版本都将浪费。如果dll是即时生成的,最好在git中忽略它们。如果他们不是 - 最好使用另一个同步机制(例如rsync)。 – 2013-03-20 06:55:14

+0

这些是我想添加到git的NuGet包。我没有使用NuGet的“Package Restore”功能,所以我需要检入整个包文件夹。 – 2013-03-20 12:49:15

回答

107

您的主目录中是否有~/.gitignore_global~/.gitignore这也可能列出这些文件模式?

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

+5

鉴于他正在使用dll文件,他在Windows平台上,所以〜意味着在Windows 7下$ HOMEDRIVE $ HOMEPATH – 2013-03-20 06:17:20

+8

成为问题。尽管我没有添加这个全局忽略文件。任何理由为什么它会突然冒出来?现在我想到了,我最近安装了SourceTree(来自Atlassian)。也许这是罪魁祸首? – 2013-03-20 12:52:12

+6

我有同样的问题,我之前也安装了SourceTree。所以我想这是一个公平的猜测,SourceTree添加了全局忽略文件,因为它过去曾经工作过。 – 2013-08-19 15:32:49

8

我可以手动添加的.dll文件,但他们应该被跟踪。为什么他们没有被追踪?

不,他们不应该被跟踪,除非你已经添加它们。只跟踪已经添加和提交的文件;这就是“跟踪”的含义。

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

+0

我做了一个“git add'/ packages'”,它没有检测到.dll。然后我使用-f并添加它。尽管我发现了这个问题。 “* .dll”在我的全局忽略中。不知道这个全球忽视来自何处。 – 2013-03-20 12:50:37

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 
+1

我不得不“git add -f”来跟踪实际上被忽略的文件。事实证明,这是全局忽略文件中的一个条目,这是一些应用程序在我无意中放入的。 – 2013-03-20 12:53:20

1

在我的情况下,.gitignore文件中没有.dll引用,并且没有全局文件。但是,在.git子目录中,我找到了一个名为ms-persist.xml的文件。我关闭了Visual Studio的所有实例,然后手动将缺少的.dlls添加到该文件。当我重新打开视觉工作室时,.dlls显示为需要检入。我检查了他们,现在我是金...

76

如果使用SourceTree和默认设置,它将忽略所有DLL默认情况下...工具=>选项=> Git然后“编辑文件”...在.dll之前添加一个“#”=>“# .dll”...保存并关闭。

然后,在Windows资源管理器中打开GitBash终端并打入“git add”。并让它工作,回到SourceTree等待一秒钟,所有这些缺少的包DLL将显示出来供您提交和推送。

+9

SourceTree用户的正确答案;) – jmpcm 2015-02-03 10:09:22

+0

了解全局忽略列表,无法在GUI中找到它。谢谢! – Christoph 2015-04-26 19:18:27

+0

工具=>选项=> Git/Mercurial Global Ignore List ...如果你没有一个你可以创建并指向它。 – KevinB 2015-04-27 20:01:53

0

您有一个全局的.gitignore某处或其他.gitignore文件在子目录中 - 相对于您的项目的根目录。

在Linux系统和MacOS全球混帐忽略是最有可能在您的主页~/

~/.gitignore_global

在Windows上,很可能会在你的用户目录。无论是你的本地用户(您可以通过在命令行中ECHO %USERPROFILE%whoami打字找出来。

如果它不存在,那么肯定是一个.gitconfig存在代替。在此寻找的gitignore的位置(例如用户的Documents文件夹)

编辑: 使用git config --list --show-origin获得的贡献混帐设置的详细信息及其相应的文件位置