我如何告诉Git使用与“.gitignore”不同的gitignore文件?

时间:2013-03-21 01:04:28

标签: git gitignore

我可以告诉Git Git存储库与--git-dir的位置。我可以告诉Git工作树在哪里--work-tree。我如何告诉Git gitignore文件在哪里?

Q值。我为什么要做这样的事情?

一个。对于一些工作树,我有两个不同的Git存储库。一个位于.git的标准位置。这个存储库我用于正常的版本控制。另一个存储库位于.git.sync。我用这个存储库定期在计算机之间自动同步。即,这是我用Git实现的一个小Dropbox克隆和一个定期运行的小脚本。

理想情况下,我可以告诉Git将.gitignore.sync用于.git.sync存储库,而不是让Git使用它用于正常版本控制的.gitignore。< / p>

Q值。为什么我不使用Dropbox?

一个。它不会同步符号链接。坏Dropbox!

3 个答案:

答案 0 :(得分:3)

您可以使用core.excludesfile指定新的忽略文件。默认情况下,这只会影响当前存储库;如果要更改默认值,可以使用--global选项。

git config core.excludesfile ".new_gitignore"

修改1

AFAIK,.gitignore无法禁用。它优先于.git/info/excludescore.excludesfile。我能想到的唯一方法就是让一些黑客使用过滤器。 This answer很好地解释了过滤器的使用。

答案 1 :(得分:1)

每个存储库都有一个info/exclude文件 - .git/info/exclude.git.sync/info/exclude中应该有一个文件。像.gitignore一样填充那些排除文件。

答案 2 :(得分:1)

“。gitignore”似乎在大多数命令中都被硬编码为git中的每个目录排除文件,优先于所有其他忽略文件。

但是,我为Git创建了一个小补丁来克服这个限制:https://gist.github.com/rev22/9954517

它添加了以下配置选项:

core.ignoreperdir :指定'.gitignore'的替代方案作为每个目录 排除文件。如果未设置,则使用默认的“.gitignore”。 如果为空,则不使用每个目录的排除文件。