devopsinfra/action-commit-pushdevopsinfra/action-commit-push是一个功能强大的Docker镜像,作为GitHub Action使用,用于自动提交更改并推回至代码仓库。该镜像特别适用于自动化工作流,可与devops-infra/action-pull-request无缝集成,实现完整的自动化提交与PR流程。
force: true 现在使用 git push --force(破坏性变更)force_with_lease 用于更安全的强制推送,使用 --force-with-leaseamend: true 与 commit_message 来更改提交信息该镜像可从以下平台获取:
--force 和 --force-with-leaseyaml- name: 运行Action uses: devops-infra/action-commit-push@v1.0.0 with: github_token: "${{ secrets.GITHUB_TOKEN }}" add_timestamp: true amend: false commit_prefix: "[AUTO]" commit_message: "自动提交" force: false force_with_lease: false no_edit: false organization_domain: github.com target_branch: update/version
| 输入变量 | 是否必需 | 默认值 | 描述 |
|---|---|---|---|
github_token | 是 | "" | 用于推送代码的GitHub个人访问令牌 |
add_timestamp | 否 | false | 是否在新分支名称中添加时间戳。使用格式 %Y-%m-%dT%H-%M-%SZ |
amend | 否 | false | 是否修正前一次提交 (--amend)。可与 commit_message 结合使用以更改提交消息 |
commit_prefix | 否 | "" | 添加到提交消息的前缀。与 commit_message 组合使用 |
commit_message | 否 | "" | 要设置的提交消息。与 commit_prefix 组合使用。可与 amend 一起使用以更改提交消息 |
force | 否 | false | 是否使用强制推送 (--force)。仅在需要覆盖远程更改时使用。有潜在风险 |
force_with_lease | 否 | false | 是否使用带租约的强制推送 (--force-with-lease)。比 force 更安全,因为它会检查远程更改。对于 actions/checkout 需要设置 fetch-depth: 0 |
no_edit | 否 | false | 使用修正时是否不编辑提交消息 (--no-edit) |
organization_domain | 否 | github.com | GitHub企业版域名 |
target_branch | 否 | 当前分支 | 要推送代码的新分支名称。如果不存在则创建分支 |
| 输出变量 | 描述 |
|---|---|
files_changed | 已更改文件列表,通过 git diff --staged --name-status 命令返回 |
branch_name | 代码被推送至的分支名称 |
提交并推送更改到当前检出的分支。
yamlname: 运行Action on: push jobs: change-and-push: runs-on: ubuntu-latest steps: - name: 检出仓库 uses: actions/checkout@v5 - name: 修改文件 run: | find . -type f -name "*.md" -print0 | xargs -0 sed -i "s/foo/bar/g" - name: 提交并推送更改 uses: devops-infra/action-commit-push@v1.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} commit_message: "将foo替换为bar"
提交并推送更改到新分支,并使用 devops-infra/action-pull-request 创建拉取请求。
yamlname: 推送更改并创建PR on: push jobs: change-and-push: runs-on: ubuntu-latest steps: - name: 检出仓库 uses: actions/checkout@v5 - name: 修改文件 run: | find . -type f -name "*.md" -print0 | xargs -0 sed -i "s/foo/bar/g" - name: 提交并推送更改 uses: devops-infra/action-commit-push@v.11.4 with: github_token: ${{ secrets.GITHUB_TOKEN }} commit_prefix: "[自动提交] " commit_message: "将foo替换为bar" - name: 创建拉取请求 uses: devops-infra/action-pull-request@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} body: "**自动化拉取请求**<br><br>将foo替换为bar" title: ${{ github.event.commits[0].message }}
当需要修正前一次提交并强制推送时(在手动提交中添加自动更改时非常有用)。
yamlname: 修正并强制推送 on: workflow_dispatch: inputs: new_commit_message: description: '新的提交消息' required: true default: '更新的提交消息' jobs: amend-commit: runs-on: ubuntu-latest steps: - name: 检出完整历史的仓库 uses: actions/checkout@v5 with: fetch-depth: 0 # 对于force_with_lease是必需的 - name: 进行一些更改 run: | echo "附加内容" >> README.md - name: 修正并带租约强制推送 uses: devops-infra/action-commit-push@v1.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} commit_message: ${{ github.event.inputs.new_commit_message }} amend: true force_with_lease: true # 更安全的强制推送选项
使用 amend: true 时,有几种处理提交消息的选项:
更改提交消息:设置 commit_message 以提供新消息
yaml- uses: devops-infra/action-commit-push@v1.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} commit_message: "修复文档中的拼写错误" amend: true force_with_lease: true
保留现有消息:设置 no_edit: true 以保留原始提交消息
yaml- uses: devops-infra/action-commit-push@v1.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} amend: true no_edit: true force_with_lease: true
默认行为:如果两者都未设置,则使用"Files changed:"加上文件列表(当文件被修改时)
注意:即使没有文件更改,修正也能工作 - 仅更改提交消息时非常有用!
此操作提供两种不同场景的强制推送选项:
force_with_lease (推荐)git push --force-with-leaseactions/checkout 步骤中设置 fetch-depth: 0force (谨慎使用)git push --force重要:不要同时使用这两个选项。如果同时设置为 true,force_with_lease 优先。
使用特定版本标签运行Action。
yamlname: 运行Action on: push: branches-ignore: master jobs: action-commit-push: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: devops-infra/action-commit-push@v1.0.0 id: 固定补丁版本 - uses: devops-infra/action-commit-push@v1.0 id: 固定次要版本 - uses: devops-infra/action-commit-push@v1 id: 固定主要版本
欢迎贡献!详见CONTRIBUTING。 本项目采用MIT许可证 - 详见LICENSE文件。
本项目采用MIT许可证 - 详见LICENSE文件。
如有任何问题或需要帮助,请:



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务