对多个仓库使用单个.gitignore

g6ll5ycj  于 2023-04-10  发布在  Git
关注(0)|答案(1)|浏览(81)

我有许多git仓库,它们具有相同的整体开发使用,工具和文件/文件夹结构。每个仓库的.gitignore都是相同的。有没有办法为所有仓库使用单个.gitignore来减少维护负担,而不是单独更新每个仓库?我可能有3种风格的仓库,所以有3个版本的通用.gitignore文件。
我能想到的唯一方法是将.gitignore文件存储在它们自己的仓库中,将仓库作为子模块包含在每个使用它们的仓库中,然后在子模块中创建顶层.gitignore作为所需版本的符号链接。这种方法似乎过于复杂。

iyfjxgzm

iyfjxgzm1#

我看到了三个解决方案,没有一个是理想的,它们都很复杂,需要自动化脚本。

方案一

一个单独的存储库,其中.gitignore作为子模块或子树添加到所有存储库(让我们称它们为“客户端存储库”,以区别于将克隆存储库的用户)和一个符号链接。
优点-用户克隆或拉客户端存储库自动获得.gitignore
缺点是:1)所有用户都需要使用支持符号链接的操作系统;2)在更新.gitignore之后,你需要更新和推送所有的仓库,因为对于子模块,超级项目(客户端仓库)存储的是子模块的提交,子树存储的是副本;所以你需要一个脚本来更新和推送你所有的仓库。

方案二

只需将.gitignore作为文件添加到所有客户端存储库中。添加、提交、推送。在任何更新时,使用脚本同步所有存储库中的文件。添加、提交、推送。
优点-用户克隆或拉取客户端存储库会自动获得.gitignore。缺点是:你需要一个脚本来更新你所有的仓库。

方案三

使用.gitignore和运行git config core.excludesFile /path/to/.gitignore的脚本创建一个单独的存储库。
优点-设置简单。缺点是:1)你需要写一个脚本来更新用户的配置;2)教所有用户运行脚本并定期更新单独的.gitignore repo。
在我个人看来,解决方案2是最简单的,嗯,最不难。

相关问题