我可以告诉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!
答案 0 :(得分:3)
您可以使用core.excludesfile
指定新的忽略文件。默认情况下,这只会影响当前存储库;如果要更改默认值,可以使用--global
选项。
git config core.excludesfile ".new_gitignore"
修改1
AFAIK,.gitignore
无法禁用。它优先于.git/info/excludes
和core.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”。 如果为空,则不使用每个目录的排除文件。