标题说明了一切。我正在尝试将我的 NuGet 包添加到存储库。正在检测除 .dll 文件之外的所有内容。
gitignore 文件不包含对 *.dll 的引用。.dll 文件在位于整个存储库中的任何位置时都不会被识别。info/exclude 也是空的。
我还克隆了存储库(文件系统到文件系统,而不是从远程到文件系统),但没有运气。此问题也发生在两台不同的计算机上。
我可以手动添加 .dll 文件,但应该跟踪它们。为什么他们没有被追踪?
您是否有~/.gitignore_global
或~/.gitignore
在您的主目录中也可能列出这些文件模式?
如果您使用 SourceTree 和默认设置,默认情况下它将忽略所有 DLL... Tools=>Options=>Git 然后“编辑文件”...在.dll =>“# .dll”之前添加一个“#”。 。 保存并关闭。
然后在你的包文件夹中的 Windows 资源管理器中打开 GitBash 终端并输入“git add”。让它工作,回到 SourceTree 稍等片刻,所有那些丢失的包 DLL 都会显示出来供你提交和推送。
我可以手动添加 .dll 文件,但应该跟踪它们。为什么他们没有被追踪?
不,它们不应该被跟踪,除非你添加了它们。仅跟踪已添加和提交的文件;这就是“跟踪”的意思。
尝试通过手动添加其中一个,git add
它会告诉您为什么忽略它们,并提示您git add -f
无论如何都要使用添加文件。
您需要明确告诉 git 跟踪任何新文件。
运行git add filename
以将文件添加到 git 的索引。
运行git commit
以提交索引中的更改。
git status
还应该显示未跟踪的文件和目录的列表。
如果要列出 repo 中被 gitignore 忽略的所有文件,可以运行:
git ls-files . --ignored --exclude-standard --others
如果要列出 repo 中所有未跟踪的文件:
git ls-files . --exclude-standard --others
我遇到了类似的问题。我无法将 .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 选项卡中找到它并找出全局忽略列表
就我而言,.gitignore 文件中没有 .dll 引用,并且我没有全局文件。但是,在 .git 子目录中,我找到了一个名为 ms-persist.xml 的文件。我关闭了 Visual Studio 的所有实例,然后将丢失的 .dll 手动添加到该文件中。当我重新打开 Visual Studio 时,.dll 显示需要签入。我签入了它们,现在我很高兴......
您在子目录中有一个全局文件.gitignore
或其他文件 - 相对于您的项目的根目录。.gitignore
在 Linux 系统和 MacOS 上,全局 git-ignore 最有可能在您的主页中~/
~/.gitignore_global
在 Windows 上,它可能在您的用户目录中。您的本地用户(您可以通过输入ECHO %USERPROFILE%
或whoami
在命令行中找到该用户。
如果它不存在,那么肯定 a.gitconfig
存在。在此处查找 gitignore 的位置(例如,用户的Documents
文件夹)。
编辑:git config --list --show-origin
用于获取贡献的 git-settings 及其相应文件位置的详细信息。
我知道这个问题已经很老了,但我正在为将来可能会访问这个问题的其他人添加。您可以按照上述答案修改全局忽略文件,但这会影响您的所有 git 存储库。相反,如果您想要更精细的方法,您可以在您的单个项目 .gitignores 中排除特定的 DLL 或特定文件夹。这会覆盖所有忽略设置并强制 git 检测和处理文件。我认为这是一个更好的方法。
.gitignore(针对您的特定项目)
# Custom ignores
!*.dll
# or
!My.specific.dll
# rest of .gitignore