随着时间的推移,这个大型项目已经获得了相当多的.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