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

5
我可以使用--git-dir告诉Git Git存储库的位置。我可以使用--work-tree告诉Git工作树的位置。那么我如何告诉Git gitignore文件的位置呢?
问:为什么要这样做?
答:对于某些工作树,我有两个不同的Git存储库。一个在标准位置.git,我用它进行正常的版本控制。另一个存储库在.git.sync中,我用它来在计算机之间定期自动同步。也就是说,这是我自己的小型基于Git和定期运行的脚本实现的Dropbox克隆。
理想情况下,我应该能够告诉Git使用.gitignore.sync而不是使用相同的.gitignore来管理.git.sync存储库。
问:为什么不直接使用Dropbox?
答:它无法同步符号链接。坏Dropbox!
3个回答

4

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

git config core.excludesfile ".new_gitignore"

编辑1

据我所知,.gitignore无法被禁用。它比.git/info/excludescore.excludesfile优先级更高。我能想到的唯一方法是使用过滤器进行一些黑科技。 此答案很好地解释了过滤器的使用。


1
谢谢! 显然,这可以让您指定第三个.gitignore文件,除了.gitignore.git.sync/info/exclude之外。 我还需要能够关闭.gitignore,因为该目录可能具有我无法控制的.gitignore - Douglas
@Douglas,根据你的评论进行了一些编辑。据我所知,无法关闭.gitignore。 - Srikanth Venugopalan
@Srinkanth,感谢您的更新!不过,我还是有些困惑,不知道筛选机制如何用于解决这个特定的问题。 - Douglas

1
每个仓库都有一个 info/exclude 文件 - 在 .git/info/exclude.git.sync/info/exclude 中应该都有一个。像填写 .gitignore 文件一样填写这些 exclude 文件。

谢谢!不过我认为对于我来说这种方法并不总是适用,除非我还能告诉 Git 不要使用 .gitignore 文件。对于那些和其他人一起工作的项目,我并不总是可以随意删除 .gitignore 文件的。 - Douglas

1

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

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

它添加了以下配置选项:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接