【问题标题】:git repository ignoring all .dllsgit存储库忽略所有.dll
【发布时间】:2013-03-09 02:03:46
【问题描述】:

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

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

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

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

【问题讨论】:

  • git config --get core.excludesfile 说什么?
  • 此外,使用 git 跟踪二进制文件通常不是一个好主意,因为 git 无法有效地计算修订之间的增量,因此保留所有版本如果空间不足将是一种浪费。如果动态生成 dll,最好在 git 中忽略它们。如果不是 - 最好使用其他同步机制(例如 rsync)。
  • 这些是我尝试添加到 git 的 NuGet 包。我没有使用 NuGet 的“包还原”功能,所以我需要签入整个包文件夹。

标签: git gitignore


【解决方案1】:

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

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

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

# rest of .gitignore

【讨论】:

    【解决方案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 选项卡中找到它并找出全局忽略列表

    【讨论】:

      【解决方案3】:

      您在某处或子目录中有更多 .gitignore 文件 - 相对于您项目的根目录。

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

      ~/.gitignore_global

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

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • SourceTree 用户的正确答案 ;)
        • 知道全局忽略列表,在 GUI 中找不到它。谢谢!
        • Tools => Options => Git/Mercurial Global Ignore List ...如果你没有,你可以创建并指向它。
        • 文件位置:~/Documents/gitignore_global.txt
        • 这适用于源代码树,但是对于 Visual Studio,忽略如何不在我的 gitignore 中。我为此任务使用的任何源代码树
        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          您需要明确告诉 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
          

          【讨论】:

          • 我不得不“git add -f”来跟踪实际上被忽略的文件。原来它是全局忽略文件中的一个条目,一些应用程序在我不知情的情况下把它放在那里。
          【解决方案7】:

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

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

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

          【讨论】:

          • 我做了一个“git add '/packages'”,但没有检测到 .dll。然后我使用了 -f 并添加了它。我发现了这个问题。 “*.dll”在我的全局忽略中。不知道这种全局忽略来自何处。
          【解决方案8】:

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

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

          【讨论】:

          • 鉴于他正在处理dll文件,他在Windows平台上,所以〜意味着Windows 7下的$HOMEDRIVE $HOMEPATH
          • 原来是这个问题。我没有添加这个全局忽略文件。为什么它会突然冒出来?现在我想起来了,我最近安装了 SourceTree(来自 Atlassian)。也许是罪魁祸首?
          • 我也遇到了同样的问题,在此之前我也安装了 SourceTree。所以我想这是一个合理的猜测,SourceTree 添加了全局忽略文件,因为它过去曾经工作过。
          • 编辑:好的,是SourceTree添加的link
          • 我必须运行 git check-ignore 才能找出文件的位置。收藏在 ~/Documents/gitignore_global.txt
          猜你喜欢
          • 2021-02-19
          • 1970-01-01
          • 2012-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-30
          • 2011-09-30
          相关资源
          最近更新 更多