是否有命令可以将 gitignore 树"roll up"到一个父 gitignore 中?



随着时间的推移,这个大型项目已经获得了相当多的.gitignore文件,这些文件分散在其许多目录中。添加一个新的.gitignore";在现场";当您处理一些新的输出文件夹或其他东西时,它非常方便,但很难推理。

有没有办法";"卷起";所有这些完全不同的.gitignore文件都放回项目根目录的.gitgnore中最终结果将是在整个项目范围内创建一个.gitignore,并删除所有其他特别的。

如果我能一次滚动一个子树,或者滚动到一个普通的孩子,这样我就可以更有效地管理这些变化,这将是特别的,但我不会挑剔。


具体示例:

之前:

root
|- .gitignore
|- subdir1
|  |- .gitignore
|  |- subdir3
|     |- .gitignore
|     |- ignored_file.txt
|- subdir2
|- .gitignore
# the .gitignore in subdir3
/ignored_file.txt

之后:

root
|- .gitignore
|- subdir1
|  |- subdir3
|     |- ignored_file.txt
|- subdir2
# the .gitignore in root
/subdir1/subdir3/ignored_file.txt

谢谢你抽出时间!

标准的linuxfind命令(或其最新的同级fd(将为您列出文件:

$ find * -name .gitignore
.gitignore
subdir1/.gitignore
subdir1/subdir3/.gitignore
subdir2/.gitignore

如果您有一个扩展.gitignore文件的脚本:

# write a script, which takes a path as input,
# and prefixes all patterns found within the file with 'path/' :
$ expand.py subdir1/subdir3/.gitignore
/subdir1/subdir3/ignored_file.txt

您可以将两者结合:

$ find * -name .gitignore | xargs -L1 expand.py
# look only in the subdir1 subdirectory :
$ find subdir1/ -name .gitignore | xargs -L1 expand.py

相关内容

最新更新