有没有办法创建一个.gitignore 文件夹而不是一个文件?这样 Git 会将 .gitignore/ignorerulesA 和 .gitignore/ignorerulesB 都解析为忽略文件?
我可以看到这在我有两个要合并的非重叠结构的存储库的情况下很有用。
repoa
filea
foldera
.gitignore/ignorea
repob
fileb
folderb
.gitignore/ignoreb
通过这种结构,我可以合并 reppoa 和 repob 而不会发生任何冲突。
如果这还不可能,那么请求此功能是否有意义?
我不确定我的问题的搜索结果是否很差,因为:
- 也许这只是一个坏主意
- 我没有正确的搜索词".gitignore 文件夹"只是一堆关于如何忽略文件夹的说明。"多个.gitignore files"只是谈论将.gitignore 放在不同的文件夹中。
- 我是一个属,以前没有人想到过这一点。
更新:澄清
如果我们采用上面示例中的两个存储库并为每个存储库应用不同的 .gitignore 规则。
例如,在 repoa 中,我想忽略文件夹,而在 repob 中,我想忽略 fileb。我最终陷入了这种情况
repoa
filea
foldera
.gitignore
foldera
repob
fileb
folderb
.gitignore
fileb
现在我想创建存储库。
mkdir repoab
cd repoab
git init
git remote add repoa /path/to/repoa
git remote add repob /path/to/repob
git pull repoa master
git pull repob master
rom ../repob
* branch master -> FETCH_HEAD
Auto-merging .gitignore
CONFLICT (add/add): Merge conflict in .gitignore
Automatic merge failed; fix conflicts and then commit the result.
基本上每次我处理 repoa 或 repob 的更新时,我都必须处理这种冲突,这当然不理想。
您可以使用 <directoryname>/
忽略目录。
在您的示例中,添加file*/
将忽略这两个文件夹,如果您尝试合并 2 个存储库/分支,则不会发生合并冲突。
当你发现搜索"多个.gitignore 文件"时,你可以把不同的文件放在不同的目录中,但 Git 不会在一个目录中处理多个.gitignore
文件。通常,Git 会在您的pwd
中查找这样的配置文件,然后爬网到父目录,直到找到一个或到达根目录。该策略与拥有一个包含多个配置文件的特殊目录不符。
虽然这不能解决您的合并问题(我认为您需要子模块(,但您可以为其他协作者不需要忽略的编辑器交换文件之类的内容设置全局.gitignore
。我在~/.gitignore
有一个,并告诉 Git 用 ~/.gitconfig
阅读它:
[core]
excludesfile = /Users/kristjan/.gitignore
通过这种结构,我可以合并 reppoa 和 repob 而不会发生任何冲突。
但你不能。 .gitignore
文件可以有排除项,即使没有这些排除项,一个存储库也可能期望包含某些类型的文件,而另一个存储库希望生成它们(因此忽略它们(。 顺序很重要。
您可以将.gitignore
放在它们应用的树中,foldera/.gitignore
等等。这对顶级文件没有帮助,但是如果你那里有冲突的规范,你那里也有冲突的文件,所以忽略混乱并不是那里真正的问题。