.gitignore - 忽略文件的目录

  • 本文关键字:文件 gitignore git
  • 更新时间 :
  • 英文 :


有没有办法创建一个.gitignore 文件夹而不是一个文件?这样 Git 会将 .gitignore/ignorerulesA 和 .gitignore/ignorerulesB 都解析为忽略文件?

可以看到这在我有两个要合并的非重叠结构的存储库的情况下很有用。

repoa
  filea
  foldera
  .gitignore/ignorea
repob
  fileb
  folderb
  .gitignore/ignoreb

通过这种结构,我可以合并 reppoa 和 repob 而不会发生任何冲突。

如果这还不可能,那么请求此功能是否有意义?

不确定我的问题的搜索结果是否很差,因为:

  1. 也许这只是一个坏主意
  2. 我没有正确的搜索词".gitignore 文件夹"只是一堆关于如何忽略文件夹的说明。"多个.gitignore files"只是谈论将.gitignore 放在不同的文件夹中。
  3. 我是一个属,以前没有人想到过这一点。

更新:澄清

如果我们采用上面示例中的两个存储库并为每个存储库应用不同的 .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等等。这对顶级文件没有帮助,但是如果你那里有冲突的规范,你那里也有冲突的文件,所以忽略混乱并不是那里真正的问题。

最新更新