【问题标题】:include files in certain bin folders in git tfs via Visual Studio 2013通过 Visual Studio 2013 在 git tfs 的某些 bin 文件夹中包含文件
【发布时间】:2016-06-22 10:34:17
【问题描述】:

我有一个 .gitignore 文件,其中包含这两行:

(1) [Bb]in/
(2) !X/Y/[Bb]in

我的理解是,第一行是一个笼统的声明,说不应包含 Bin/bin 文件夹中的文件。第二行的目的是实现一个异常,即包含X/Y的bin/bin文件夹下的所有文件。

由于某种原因,X/Y/[Bb]in 的内容仍然不包括在内。我必须主要将 Visual Studio 2013 用于 git tfs,但我也尝试通过 git bash 强制包含:

git add .

第 (2) 行有什么东西吗?

【问题讨论】:

  • 您不应将二进制文件放在 Git 存储库中。 Git 不能有效地对二进制文件进行版本控制,它会导致存储库随着时间的推移变得非常大。
  • 我知道这是不好的做法,但在这种情况下是必要的。
  • 绝对没有必要。您可以为二进制依赖项使用包管理器。 NuGet 存储库可以像文件共享中的文件夹一样简单。
  • 我需要它来自动部署到 Azure:azure.microsoft.com/en-gb/documentation/articles/… 让我们不要陷入更多这样的“争论”。让我们假设我在谈论 .txt 文件 (-:

标签: git visual-studio github visual-studio-2013


【解决方案1】:

第一行排除了目录——无论它在哪里,因此完全忽略了该目录中的任何内容,因此您甚至无法重新包含它。这就是为什么你的模式不起作用的原因。

为了完成这项工作,您必须先排除文件和文件夹,然后才能重新包含它们。 为了让它更简单一点,只假设一个级别(删除 y 级别)(为了清楚起见,我也跳过了大写/小写)

**/bin/**
x/**
!x/bin

此模式将完全按照您上面的说明进行操作。
第一行排除任何 bin 文件夹下的所有内容。前缀 ** 使其适用于任何文件夹级别,没有它 - 它只会适用于根级别的 bin 文件夹。后缀 ** 使其适用于其下的文件和文件夹。 第二行明确排除了“x”文件夹及其内容。是的,这很奇怪,但这就是使它起作用的原因。 然后第三行重新包含二进制文件夹。

我假设您有一些想要包含在“x”下的源代码,然后您也可以明确地重新包含它,所以最好将其放在单独的文件夹下。

查看这些帖子了解一些相同的问题
Using .gitignore to ignore everything but specific directories
What's the difference between Git ignoring directory and directory/*?
.gitignore exclude folder but include specific subfolder

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2022-07-06
    • 2010-09-13
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多