# @currents/commit-info 中文文档

规范地址：https://npmcn.com/package/%40currents/commit-info/

版本：3\.0\.0
npm 元数据更新时间：2026-11-04T23:25:58.624Z
中文译文更新时间：2026-11-11T05:02:09.924Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40currents/commit-info
原文对照：https://npmcn.com/package/%40currents/commit-info/?lang=original
项目主页：https://github.com/currents-dev/commit-info#readme
源码仓库：https://github.com/currents-dev/commit-info

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：46.2 kB，11 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2023-11-07T07:58:50.461Z
- 最新版本发布：2026-11-04T23:25:58.212Z
- 近 30 天下载量：1839102（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 6 个）

## 中文简介

收藏 CI或CLI提供的Git信息

## 安装

```sh
npm install @currents/commit-info
```

也可以使用：`pnpm add @currents/commit-info`、`yarn add @currents/commit-info`、`bun add @currents/commit-info`

## README

# @ 当前/ 承诺- info

收藏 Git 来自 git CLI 的信息

## 安装

测试过 [节点.js](https://nodejs.org/en/) 页:1.

```sh
npm install --save @currents/commit-info
```

## 使用

```js
const {commitInfo} = require('@currents/commit-info')
// default folder is current working directory
commitInfo(folder)
  .then(info => {
    // info object will have properties
    // branch
    // message
    // email
    // author
    // sha
    // timestamp (in seconds since epoch)
    // remote (without credentials)
    // ghaEventData (GitHub Actions pull request events only)
  })
```

每个财产都来自第一个有价值的财产,或者是 `null`数字 :

1.  页:1 `COMMIT_INFO_*` 环境变量,见 [后退环境变量](https://npmcn.com/package/%40currents/commit-info/#readme-fallback-environment-variables)
2.  gi [src/git-api.js (英语)](https://npmcn.com/package/%40currents/commit-info/src/git-api.js)
3.  cI 提供者的环境变量,参见 [CI 提供者变量](https://npmcn.com/package/%40currents/commit-info/#readme-ci-provider-variables)

这个 `remote` 是例外: CI 提供者的值出现在 git 之前. `COMMIT_INFO_REMOTE` 还是先来 例如,在Azure管道上,克隆人往往有一个SSH遥控器,以及 `BUILD_REPOSITORY_URI` 拥有 HTTPS URL 。 设置遥控器的 CI 供应商有 AWS 代码构建、 Azure 管道、 竹子、 Buildkite、 CircleCI、 Drone、 GitLab、 Semaphore 和 Netlify, 参见 [标准/c.js](https://npmcn.com/package/%40currents/commit-info/src/ci.js)。 。 。 .

注释:

-   git 报告没有分支进行脱机(`HEAD`),所以分支来自CI提供者. 来自 `COMMIT_INFO_BRANCH` 并如实报告提供供应商.
-   `remote` 从不包含用户名称或密码,无论它来自何处。 GitLab的电话 `CI_REPOSITORY_URL`例如,持有工作标志.
-   以本地人决定 `Promise`。 。 。 .
-   如果您需要调试, 请使用 `DEBUG=commit-info` 环境变量。 调试输出不包含远程的证书 .
-   当 git 失败, 并且字段在 CI 提供者的变量之后仍然是空的, `commitInfo` 用 git 错误和 `COMMIT_INFO_*` 要设置的变量。 没有寄存器和CI提供者的变量填充字段时,或者没有寄存器和CI提供者时,没有警告.
-   当 git 不安装或不安装在 `PATH`,所有 git 值都是空的,警告说 git 在 `PATH`。安装 git 或设置 `COMMIT_INFO_*` 变量.

## CI 提供者变量

当 git 不返回一个值时, 它来自 CI 提供者的变量 。 遥控器首先来自这些变量. 该分支来自:

| 提供者 | 处 |
| --- | --- |
| GitHub 动作 | `GH_BRANCH`, (中文(简体) ), `GITHUB_HEAD_REF` (请求), `GITHUB_REF_NAME`,或 `GITHUB_REF` 无 `refs/heads/` 或者说 `refs/tags/` |
| 吉特拉布语Name | `CI_COMMIT_REF_NAME` |
| 圆CI | `CIRCLE_BRANCH` |
| 詹金斯(英语: | `CHANGE_BRANCH` (多分支牵引请求),或 `GIT_BRANCH` 无 `origin/`, (中文(简体) ), `refs/remotes/origin/` 或者说 `refs/heads/` |
| 水管 | `SYSTEM_PULLREQUEST_SOURCEBRANCH` 无 `refs/heads/` (撤回请求),或 `BUILD_SOURCEBRANCHNAME`,而这只是最后一个部分: `x` 页:1 `feature/x` |
| 点球管 | `BITBUCKET_BRANCH` |
| 建树 | `BUILDKITE_BRANCH` |

AWS 代码Build 给出没有分支 。 其他财产和提供者在 [标准/c.js](https://npmcn.com/package/%40currents/commit-info/src/ci.js)。 。 。 . `getCiCommitInfo()` 返回这些值和提供者名称.

## 集装箱

git 2.35.2,后来拒绝读取由另一个用户拥有的寄存器,其中 `fatal: unsafe repository` (2.35.2至2.37.x) 或 `fatal: detected dubious ownership in repository` (2.38.0及后). 当一个容器作为根运行于另一个用户的取出时,这种情况很常见. 在 CI 上,只读的 git 命令会再次运行 `-c safe.directory=*`CI意味着 `CI` 变量设定为非 `false` 或者说 `0`,或者CI提供商之一在 [src/ci-professor.js (中文(简体) )](https://npmcn.com/package/%40currents/commit-info/src/ci-provider.js) 检测到;例如,Jenkins没有设置 `CI`。 。 。 . `GOOGLE_CLOUD_PROJECT`, (中文(简体) ), `GCP_PROJECT`, (中文(简体) ), `GCLOUD_PROJECT` 财务报告和审定财务报表 `JENKINS_HOME` 不计数,因为开发者往往在外壳中设置它们. `*` 因为文件夹可以是寄存器的子文件夹.

git 2.35.2至2.37.x 忽略 `safe.directory` 在命令行,所以这里 `commitInfo` 打印警告(图2.3.8.0并随后予以尊重);运行 `git config --global --add safe.directory '*'` 或设置 `COMMIT_INFO_*` 变量.

## 拉动请求构建

根据拉动请求建立许多 CI 提供者检查一个将拉动请求合并到目标分支的承诺. GitHub 动作, 例如检查 `refs/pull/<number>/merge`,其信息为 `Merge <sha> into <sha>`。 。 。 .

当退约承诺如此合并时, `commitInfo` 报告拉动请求的最后承诺: `sha`, (中文(简体) ), `message`, (中文(简体) ), `email`, (中文(简体) ), `author` 财务报告和审定财务报表 `timestamp`发现其行为包括:

-   GitHub 动作 : `pull_request.head.sha` 在事件文件中 (`GITHUB_EVENT_PATH`(中文(简体) )
-   GitLab 合并了成果管道: `CI_MERGE_REQUEST_SOURCE_BRANCH_SHA`
-   阿苏雷管: `SYSTEM_PULLREQUEST_SOURCECOMMITID`
-   崔维斯: `TRAVIS_PULL_REQUEST_SHA`
-   司马彪: `SEMAPHORE_GIT_PR_SHA`
-   Buildkite : (帮助) `BUILDKITE_PULL_REQUEST_HEAD_COMMIT`
-   Bitbucket 管道 : `BITBUCKET_COMMIT`

承诺只有在被检查出的承诺是合并,而承诺是其父母之一时才使用。 如果一个浅层克隆体没有包含它( 例如) `actions/checkout` 默认值 `fetch-depth: 1`它将随着 `git fetch --depth=1 origin <sha>`,还有3次暂停。 如果取回失败, 则报告退出承诺 。 获取不使用 `safe.directory` 重试。 设定 `CURRENTS_DISABLE_HEAD_COMMIT_FETCH=true` 跳过获取.

这个 `COMMIT_INFO_*` 下面的变量仍然具有优先地位。 何时 `COMMIT_INFO_SHA` 被设定,拉请求的承诺没有被检查.

## 后退环境变量

您可以通过设置这些环境变量来提供承诺信息 。 它们优先于git和CI提供者的变量.

```
branch: COMMIT_INFO_BRANCH
message: COMMIT_INFO_MESSAGE
email: COMMIT_INFO_EMAIL
author: COMMIT_INFO_AUTHOR
sha: COMMIT_INFO_SHA
timestamp: COMMIT_INFO_TIMESTAMP
remote: COMMIT_INFO_REMOTE
```

### 嵌入容器

在 Docker 容器内运行应用程序时,您应该使用 `-e` 语法.

```shell
$ docker run \
  -e COMMIT_INFO_BRANCH=develop \
  -e COMMIT_INFO_SHA=e5d9eb66474bc0b681da9240aa5a457fe17bc8f3 \
  <container name>
```

见 [插件实例](https://npmcn.com/package/%40currents/commit-info/docker-example) 一个完整的例子.

## 个别方法

何况 `commitInfo` 本单元还揭示了个人承诺的回归 方法 `getBranch`, (中文(简体) ), `getMessage`, (中文(简体) ), `getEmail`, (中文(简体) ), `getAuthor`, (中文(简体) ), `getSha`, (中文(简体) ), `getTimestamp`, (中文(简体) ), `getRemoteOrigin`。这些方法只使用git,而不是环境变量. `getRemoteOrigin` 返回没有证书的远程.

其他出口:

-   `getCiCommitInfo(env = process.env)`: CI 提供者的值,参见 [CI 提供者变量](https://npmcn.com/package/%40currents/commit-info/#readme-ci-provider-variables)编辑 `remote` 没有证书.
-   `detectCiProvider(env = process.env)`: CI 提供者名称,例如 `githubActions`,或 `null`。 。 。 .
-   `removeCredentials(url)`:从URL中删除用户名和密码,保留端口. 返回其他值,例如: `git@github.com:o/r.git`就像他们一样.

举个例子

```js
const {getAuthor} = require('@currents/commit-info')
getAuthor('path/to/repo')
  .then(name => ...)
```

### 获取缓冲

以当前 git 分支名称或 `null`。 。 。 .

```js
const {getBranch} = require('@currents/commit-info')
getBranch()
  .then(branch => ...)
```

-   如果这是分离的(报告) `HEAD`),返回时 `null`

### 小印数

许可:麻省理工学院 - 做任何与代码有关的事情, 但如果它不起作用,不要责怪我.

支持: 如果您发现此模块有任何问题, 电子邮件 / 微博 / [未决问题](https://github.com/currents-dev/commit-info/issues) 在基图布

## MIT 许可证

版权(c)2017 Cypress.io

特此免费准许任何人 获取该软件和相关文件的副本 文件(“软件”),在软件中处理,不包含 限制,包括不限制使用权, 复制、修改、合并、出版、发行、分版和/或销售 软件的复制本,并允许向 为此提供了软件,但须符合下列条件: 条件:

上述版权通知和本许可通知应为: 列入软件的所有副本或大部分.

软件是提供的"是", 没有任何种类的恐惧, 或监禁,包括但不限制于 特别目的和目的的证明 无所不入。 绝对不能让警察或警察 B. 任何索赔、救济或其他负债的持有者, 条约、条约或其他条约行动 来源、来源或与溶剂或使用有关的 其他交易 在软件.

## 常见问题

### @currents/commit-info 是什么？

收藏 CI或CLI提供的Git信息

### 如何安装 @currents/commit-info？

在项目目录运行 npm install @currents/commit-info，或使用 pnpm add / yarn add / bun add。

### @currents/commit-info 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @currents/commit-info 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @currents/commit-info 可以商用吗？

@currents/commit-info 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @currents/commit-info 的下载量有多少？

根据 npm 官方下载统计，@currents/commit-info 在 2026/10/11 – 2026/11/09 这 30 天内被下载 1,839,102 次，日均约 61,303 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @currents/commit-info 还在维护吗？

最新版本 3\.0\.0 发布于 2026/11/05（6 天前）；至今共发布 8 个版本，其中过去 12 个月发布了 6 个；首次发布于 2023/11/07。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

