gitignore加载其他gitignore

gitignore加载其他gitignore,git,gitignore,Git,Gitignore,可能吗?git更新索引——假设unchanged不是解决方案,则必须跟踪被忽略的文件。也可以创建子模块 例如 第3类(1 | 2 | 3…) 猫,吉特 basic-stuff.extension .customgitignore1 .customgitignore2 .customgitignore3 等 为感兴趣的人提供问题描述 我正在创建配置的私有回购。一个分支=一个配置。附加分支作为工作区。我根据需要将其他分支配置与工作区合并。分支配置每个都有自己的.gitignore,只有在合并后才应

可能吗?
git更新索引——假设unchanged
不是解决方案,则必须跟踪被忽略的文件。也可以创建子模块

例如

第3类(1 | 2 | 3…)

猫,吉特

basic-stuff.extension
.customgitignore1
.customgitignore2
.customgitignore3
等
为感兴趣的人提供问题描述

我正在创建配置的私有回购。一个分支=一个配置。附加分支作为工作区。我根据需要将其他分支配置与工作区合并。分支配置每个都有自己的.gitignore,只有在合并后才应应用。我试图忽略gitignore文件中的冲突

我试图忽略gitignore文件中的冲突

然后不要对最终的.gitignore文件本身进行版本设置:按需生成它

将.gitignore文件分开,但添加(一个
smudge
脚本),它将:

  • 每个.gitignore.xxx文件的
  • 将其内容连接到实际的.gitignore(该文件未添加到git,并且仍然是一个私有文件)

由于Git不支持这种开箱即用的方式,您可以自己用Git钩子实现一个,例如:

#!/bin/bash
gitignoreWithIncludes=".gitignoreincludes"    
if [[ -f $gitignoreWithIncludes ]]; then
  echo ".gitignore" > .gitignore
  while read -r line
  do
      if [[ $line == include* ]]; then
        includeName=${line:8}
        while read -r includeLine
        do
          echo $includeLine >> .gitignore
        done < $includeName
      else
        echo $line >> .gitignore
      fi
  done < $gitignoreWithIncludes 
fi
在任何情况下,都需要管理忽略并将其包含在自定义文件中,而不是
.gitignore
本身,因为将生成此文件。比如说,在一个分支中有一个
.gitignoreincludes
文件,在其他分支中有一个自定义includes文件

因此,您可以像这样安装“合并后”挂钩,例如:

#!/bin/bash
gitignoreWithIncludes=".gitignoreincludes"    
if [[ -f $gitignoreWithIncludes ]]; then
  echo ".gitignore" > .gitignore
  while read -r line
  do
      if [[ $line == include* ]]; then
        includeName=${line:8}
        while read -r includeLine
        do
          echo $includeLine >> .gitignore
        done < $includeName
      else
        echo $line >> .gitignore
      fi
  done < $gitignoreWithIncludes 
fi
#/bin/bash
gitignoreWithIncludes=“.gitignoreincludes”
如果[-f$gitignoreWithIncludes]];然后
echo“.gitignore”>.gitignore
而read-r行
做
如果[[$line==include*];然后
includeName=${line:8}
而read-r includeLine
做
echo$includeLine>>.gitignore
完成<$includeName
其他的
echo$line>>.gitignore
fi
已完成<$gitignoreWithIncludes
fi
此钩子将在任何成功合并时启动,将查找
.gitignoreincludes
文件,如果存在,将生成
.gitignore
文件
.gitignore
将包含
中的所有条目。gitignoreincludes
以及引用为
的所有文件中的所有条目包括文件名。拥有
.gitignore
忽略自身允许在执行合并时多次安全地重新生成它

这可以通过允许
include
指令也包含在包含的文件中来进一步改进,或者还可以实现
post checkout
钩子来在分支之间切换时重新生成.gitignore等

#!/bin/bash
gitignoreWithIncludes=".gitignoreincludes"    
if [[ -f $gitignoreWithIncludes ]]; then
  echo ".gitignore" > .gitignore
  while read -r line
  do
      if [[ $line == include* ]]; then
        includeName=${line:8}
        while read -r includeLine
        do
          echo $includeLine >> .gitignore
        done < $includeName
      else
        echo $line >> .gitignore
      fi
  done < $gitignoreWithIncludes 
fi