发布于 2026-01-06 0 阅读
0

gig:一个 .gitignore 生成器 添加 direnv.gitignore #241 Pull Request gig -- .gitignore 生成器 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

服务:一个 .gitignore 生成器

添加 direnv.gitignore #241

拉取请求

gig-- .gitignore 生成器

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

git如果你在项目中使用过.gitignore,你可能知道它是什么.gitignore。由于我总是记不住 .gitignore 的格式,所以每次需要为特定项目编写 .gitignore 文件时,我都会在浏览器中访问github/gitignore,搜索 .gitignore 文件,打开它,复制其内容,最后粘贴到我的编辑器中……

使用 github/gitignore

可以想象,如果需要为多种编程语言创建 .gitignore 文件,这个过程会变得非常繁琐。

前段时间我接触到了gitignore.io,这是一个 Web 服务,可以让我们轻松地为多种语言创建 .gitignore 文件。gitignore.io还提供 API 访问,以及非常完善的命令行运行文档。这对我来说是一次巨大的升级,从那以后我就一直在使用这个工具。我甚至还向 gitignore direnv提交了一个 PR

添加 direnv.gitignore #241

基于https://github.com/direnv/direnv/wiki/Git

拉取请求

感谢您为 @dvcs/gitignore 和https://www.gitignore.io做出贡献。

新增或更新

请为该拉取请求选中相应的复选框。这有助于在合并时确保与其他模板没有冲突,或避免对模板列表的工作方式产生误解。

新的

  • [x] 模板 - 新.gitignore模板
  • [ ] 组合 - 由较小模板组成的模板
  • [ ] 继承 - 与现有模板类似的模板
  • [ ] 补丁 - 扩展现有模板功能的模板

更新

  • [ ] 模板 - 更新现有.gitignore模板

细节

direnv是一个可以根据当前工作目录加载和卸载环境变量的工具。通常建议不要将其配置文件.envrc包含在公共仓库中,因此将其添加到 .gitignore 文件中会非常方便。这些值基于以下文档:https://github.com/direnv/direnv/wiki/Git

谢谢。

然而,PR 合并后,我发现gitignore.io文件中的更改尚未生效。我猜测维护者需要重新部署网站才能包含最新的集合。



$ curl https://gitignore.io/api/direnv

# Created by https://www.gitignore.io/api/direnv
# Edit at https://www.gitignore.io/?templates=direnv

#!! ERROR: direnv is undefined. Use list command to see defined gitignore types !!#

# End of https://www.gitignore.io/api/direnv


Enter fullscreen mode Exit fullscreen mode

gitignore.io 的 gitignore 模板集合维护在一个独立的仓库中:github.com/toptal/gitignore。它们是github/gitignore的扩展,包含一些额外的类型.patch,称为.stack`<type>` 和 `<type>`。当我遇到上述错误时,我想知道是否可以不用 Web 服务直接使用该仓库生成 gitignore 文件。结果,我陷入了深深的困惑,最终……

GitHub 标志 shihanng /演出

(大部分情况下)可以在离线状态下从终端生成 .gitignore 文件!

gig-- .gitignore 生成器

GitHub GitHub 版本(按日期排序的最新版本) 成绩单 覆盖范围状态

gig是一个命令行工具,可以帮助您.gitignore为项目创建有用的文件。它借鉴了gitignore.io的设计,并利用了该 Web 服务提供的丰富模板。.gitignore意味着它gig支持 gitignore.io 识别的四种文件类型。生成的内容应该与gitignore.iogig生成的内容一致,但堆栈顺序除外,gitignore.io似乎并不保证堆栈顺序的一致性。

动机

在这个项目之前,我的配置文件里曾经有过这样一条命令行.zshrc。但是,这条命令行存在一些问题:

因此,开发此工具是为了解决……

介绍演出

gig是gitignore.io的命令行版本,它利用了上面提到的 gitignore.io 的大量 .gitignore 模板。这也意味着gig支持 gitignore.io 识别的所有四种文件类型,并能像 gitignore.io 一样生成 .gitignore 文件的内容。

安装

如果您使用的是 macOS 系统并且正在使用 Homebrew,



brew install shihanng/gig/gig


Enter fullscreen mode Exit fullscreen mode

对于其他平台,请从发布页面下载预构建的二进制文件,然后将二进制文件放置在$PATH例如/usr/local/bin.

使用

使用gig最直接的方法是使用gen子命令,并将模板名称列表作为参数传递,例如:



gig gen go terraform > .gitignore


Enter fullscreen mode Exit fullscreen mode

上面的示例为GoTerraform生成 .gitignore 模板,然后将其重定向到.gitignore文件中。通过添加额外的-f标志,我们可以省略命令中的重定向部分。gig命令会在首次运行时将github.com/toptal/gitignore仓库的内容缓存到文件中$XDG_CACHE_HOME/gig。这意味着下次执行应该可以离线工作。

当我们想要查找可用模板时,可以使用` list command.`。列表很长,所以用分页器效果更好:



gig list | less


Enter fullscreen mode Exit fullscreen mode

还有一个search命令,它会在内部调用fzf -m上面的列表,并允许用户(默认情况下按下)选择tabfzf 中的模板。

最后,还有一个最没用的autogen子命令,纯粹是为了好玩而添加的。



gig autogen


Enter fullscreen mode Exit fullscreen mode

它会检查当前目录并尝试找出需要添加到 .gitignore 文件中的内容。它内部使用source{d} 的 enry 包进行编程语言检测(enry 本身是GitHub linguist 的移植版)。遗憾的是,它并非总是能按预期工作:

  • 它无法检测框架,例如,.js文件会被检测到javascript,但没有可用的JavaScript .gitignore 模板。
  • go.mod文件go.sum将被检测为文本,原因如本 PR中所述。

这个项目最初只是个有趣的尝试,我想看看自己能用 remix 构建一个 CLI 工具做到什么程度。

现在它已经成为我启动新项目时会用到的工具。

请试用一下,我非常期待您的反馈(可以通过项目仓库中的 issues/PR或在本帖下方留言)。如果您喜欢,请点个赞⭐,让更多人知道。

感谢阅读❤️

文章来源:https://dev.to/shihanng/gig-a-gitignore-generator-opc