无法阻止Git跟踪.gitignore&#d; d文件

时间:2014-05-11 11:59:04

标签: git

我在远程存储库(BitBucket)中有一个文件,我不想跟踪Git,但我确实希望它成为存储库的一部分。将该repo拉到本地计算机时,也需要拉出该文件。但是,我不希望本地用户推送更改(即我不希望Git跟踪它)。

我将该文件添加到.gitignore。但是,它不会忽略它。我认为它可能与存储库的一部分有关,因为任何其他文件都会被忽略(例如,如果我创建一个随机文件并将其添加到.gitignore,则会被忽略)。

我已尝试过此页面上的所有内容:http://365git.tumblr.com/post/519016351/three-ways-of-excluding-files但它不会停止跟踪它。

这是唯一可行的,但不是非常用户友好,我听说实际上可能会提交更改,只是在暂存区域中不可见(执行git状态时):

git update-index --assume-unchanged [file]

无论如何,我只需要一种在远程存储库(GitHub / BitBucket)中拥有一个文件的方法,该文件可以被拉出但不被Git编辑,更新或监视。有可能吗?

1 个答案:

答案 0 :(得分:2)

Git将从不忽略明确添加的文件,而Git的忽略列表仅适用于未跟踪的文件。

因此,只要将文件添加到存储库,就会忽略该文件的.gitignore内容。没有办法解决这个问题,它很有意义,它以这种方式工作。根本不可能让Git忽略一个文件但同时跟踪它。告诉Git之后忽略对它的更改的唯一方法是使用update-index --assume-unchanged

处理此用例的常用方法是,在存储库中具有某种默认配置,但允许用户在不再在存储库中进行这些自定义的情况下对其进行自定义,是使用以下两种方法之一来处理它:是指定示例配置文件。所以不要添加例如config.ini到存储库,您向其添加config.example.ini并要求用户在进行自定义更改之前将其手动复制到config.iniconfig.ini本身被忽略,因此不会被添加到存储库中。另一种方法是指定多级配置。例如,您有一个config.ini - 它位于存储库中并包含默认配置 - 并且还会在您的应用程序中加载config.user.ini,从而可以覆盖设置。 config.user.ini再次被忽略,用户可以手动创建它,如果他们想要更改自己的配置。