90

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

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

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

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

4

8 回答 8

123

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

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

于 2013-03-20T05:11:04.893 回答
103

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

然后在你的包文件夹中的 Windows 资源管理器中打开 GitBash 终端并输入“git add”。让它工作,回到 SourceTree 稍等片刻,所有那些丢失的包 DLL 都会显示出来供你提交和推送。

于 2014-08-02T18:05:19.930 回答
11

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

不,它们不应该被跟踪,除非你添加了它们。仅跟踪已添加和提交的文件;这就是“跟踪”的意思。

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

于 2013-03-20T05:14:50.297 回答
2

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

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

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

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

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

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

如果要列出 repo 中所有未跟踪的文件:

git ls-files . --exclude-standard --others
于 2013-03-20T05:22:14.603 回答
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 选项卡中找到它并找出全局忽略列表

于 2018-03-31T14:59:41.643 回答
1

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

于 2014-01-31T00:34:07.187 回答
1

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

在 Linux 系统和 MacOS 上,全局 git-ignore 最有可能在您的主页中~/

~/.gitignore_global

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

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

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

于 2016-07-25T17:53:51.110 回答
0

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

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

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

# rest of .gitignore
于 2020-07-12T15:08:33.307 回答