5

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

问:我为什么要做这样的事情?

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

理想情况下,我可以告诉 Git.gitignore.sync用于.git.sync存储库,而不是让 Git 使用.gitignore它用于正常版本控制的相同内容。

问:我为什么不直接使用 Dropbox?

A. 它不同步符号链接。糟糕的 Dropbox!

4

3 回答 3

4

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

git config core.excludesfile ".new_gitignore"

编辑 1

AFAIK,.gitignore不能被禁用。它优先于.git/info/excludesand core.excludesfile。我能想到的唯一方法是使用过滤器进行一些黑客攻击。这个答案很好地解释了过滤器的使用。

于 2013-03-21T01:29:15.303 回答
1

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

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

它添加了以下配置选项:

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

于 2014-04-03T13:48:16.890 回答
1

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

于 2013-03-21T01:29:30.583 回答