如何告诉Git使用与“.gitignore”不同的gitignore文件?
我可以告诉Git Git仓库的地址是--git-dir
。我可以告诉Git工作树在哪里与--work-tree
。如何告诉Git gitignore文件在哪里?如何告诉Git使用与“.gitignore”不同的gitignore文件?
问:为什么我想要做这样的事情?
答:对于一些工作树,我有两个不同的Git存储库。其中一个位于.git
的标准位置。这个库用于普通的版本控制。另一个版本库位于.git.sync
。此库用于在计算机之间进行定期自动同步。也就是说,这是我自己使用Git实现的小型Dropbox克隆和一个定期运行的小脚本。
理想情况下,我将能够让Git使用.gitignore.sync
为.git.sync
存储库,而不是使用的Git它使用正常的版本控制非常相同的.gitignore
。
Q.为什么我不使用Dropbox? A.不同步符号链接。糟糕的Dropbox!
您可以使用core.excludesfile
指定新的忽略文件。默认情况下,这只会影响当前的存储库;如果您想更改默认值,则可以使用--global
选项。
git config core.excludesfile ".new_gitignore"
编辑1
AFAIK,.gitignore
不能禁用。它优先于.git/info/excludes
和core.excludesfile
。我能想到的唯一方法是使用过滤器进行一些攻击。 This answer很好地解释了过滤器的使用。
每个存储库都有一个info/exclude
文件 - .git/info/exclude
和.git.sync/info/exclude
中应该有一个文件。填充这些排除文件,就像您将要使用.gitignore
一样。
谢谢!但是,我认为这不会对我有用,除非我可以告诉Git也不要使用'.gitignore'。对于我与其他人合作的项目,我并不总是可以摆脱'.gitingore'。 – Douglas 2013-03-21 01:45:18
在大多数命令中,“.gitignore”似乎被硬编码为git中的每个目录排除文件,优先于所有其他忽略文件。
然而,我创建一个小补丁GIT中克服此限制:https://gist.github.com/rev22/9954517
它添加下列配置选项:
core.ignoreperdir:指定为“的.gitignore”替代作为每个目录 排除文件。如果未设置,则使用默认的“.gitignore”。 如果此项为空,则不使用每个目录的排除文件。
谢谢!显然,除了'.gitignore'和'.git.sync/info/exclude',您还可以指定第三个gitignore文件。我还需要能***关掉***'.gitignore',因为该目录可能有一个'.gitignore',它不在我的控制范围之内。 – Douglas 2013-03-21 01:57:03
@Douglas,根据您的评论进行一些修改。 AFAIK没有办法关闭.gitignore。 – 2013-03-21 06:28:27
@Srinkanth,感谢您的更新!不过,我很难弄清楚,如何使用过滤机制来解决这个特殊的问题。 – Douglas 2013-03-21 14:11:46