有可能吗? git update-index --assume-unchanged
不是解决方案,必须跟踪被忽略的文件。创建子模块。
E.g。
cat .customgitignore(1 | 2 | 3 ...)
i-do-not-need-this.extension
cat .gitignore
basic-stuff.extension
<load> .customgitignore1
<load> .customgitignore2
<load> .customgitignore3
etc
感兴趣的人的问题描述。
我正在创建私人的配置回购。一个分支=一个配置。附加分支作为工作区。我根据需要将其他分支配置与工作空间合并。 Branches-configs每个都有自己的.gitignore,只有在合并后才能应用。我想在gitignore文件中省略冲突。
答案 0 :(得分:7)
我想在gitignore文件中省略冲突
然后不要对最终的.gitignore文件进行版本化:按需生成它。
保持您的.gitignore文件分开,但添加content filter driver(smudge
脚本),其中包括:
答案 1 :(得分:4)
由于Git不支持开箱即用,你可以自己使用Git钩子实现一个,例如:
在任何情况下,您都需要管理您的忽略并包含在自定义文件中,而不是.gitignore
本身,因为这将生成。因此,假设您在分支中有一个.gitignoreincludes
文件,在其他分支中有自定义包含文件。
因此,您可以安装这样的“合并后”挂钩,例如:
#!/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
此挂钩将在任何成功的合并上启动,将查找.gitignoreincludes
文件,如果存在,将生成.gitignore
文件。 .gitignore
将包含.gitignoreincludes
中的所有条目以及引用为include FILE_NAME
的所有文件中的所有条目。让.gitignore
忽略自身允许在进行合并时多次安全地重新生成它。
这可以通过允许包含文件中的include
指令来进一步改进,或者也可以实现post-checkout
挂钩,以便在分支等之间切换时重新生成.gitignore等。