出于结构原因,您可以将.gitignore放在子目录(如config)而不是根目录中吗?

时间:2018-06-01 08:03:59

标签: git gitignore

我有大量文件进入根文件夹,我正在寻找清理它。

例如

.env
.babelrc
.eslintignore
.eslintrc.json
webpack.config.js
gulpfile.js
sequelize.json

... list goes on

我想在config文件夹中移动它们,因为它们是什么。

因此可以将gitignore从子目录应用到父目录。

似乎每个工具都想将其配置文件阻塞到根目录

aws,gulp,webpack,vscode,数据库,反应,linting ......

3 个答案:

答案 0 :(得分:3)

技术上可能或不可能(可能不是很健壮),但无论如何,我的回答是

别。

根目录实际上是这个东西的正确位置,原因如下:

  • 它只是工作,没有脆弱或复杂的怪癖,
  • 将配置隐藏在某个目录中会使寻找它的人更难找到(例如当出现问题时),
  • 隐藏配置将使得甚至更难发现配置文件存在,
  • 这只是这个东西的标准位置。

你知道,你只是不想让人(特别是你自己)花三个小时来调试一些问题,只是发现它是由隐藏得很好的配置文件引起的,这就是我期望的结果。

隐藏配置直接针对principle of least surprise ,这是一个坏主意。

“但我的文件在配置之间丢失了!”

如果您的文件在配置文件之间丢失,那么您正在解决错误的问题。你应该把你的东西放在子目录中,比如srcdocstest或者对你的案例有意义的地方。这是标准的方式,这就是人们所做的事情(至少在JavaScript世界中,显然是你的情况,但它与任何其他语言都是一样的)。直接在根目录中只有配置,自述文件和许可证。

将配置放在package.json而不是

另一方面,对于您提到的特定工具,配置通常可以包含在包文件(package.json)中。因此,如果文件的激增让你如此,一个简单的解决方案就是将所有可能的配置移到那里。该文件将变得庞大(无论如何),但它可能仍然优于多个文件。

答案 1 :(得分:1)

非常好的问题,谢谢你的提问。

最重要的是我有两种方法可以解决这个问题。

首先:本地

您根本不必使用.gitignore忽略文件,而是将模式放入:

.git/info/exclude

第二:自定义忽略

git config core.excludesfile ./config/.gitignore

这有效地解决了您的问题。

答案 2 :(得分:0)

如果在 GUI 编辑器中编写时膨胀只会分散您的注意力,您可以检查是否有前端插件仅在没有提到猴子业务 @Frax 的情况下隐藏项目。

例如 VS-Code 的 make-hidden