You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub Actions自动合并TXT文件至Merge.txt

GitHub Actions 自动合并TXT文件到Merge.txt

以下是完整的工作流配置,实现新增/编辑TXT文件时自动合并所有TXT内容到Merge.txt并提交:

# 工作流名称
name: Merge TXT Files

# 触发条件:仅当main分支的TXT文件变更时触发,也支持手动触发
on:
  push:
    branches: ["main"]
    paths: ["**.txt"]
  workflow_dispatch:

jobs:
  merge-and-commit:
    runs-on: ubuntu-latest
    steps:
      # 拉取仓库代码
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0 # 需要完整历史才能提交

      # 合并所有TXT文件到Merge.txt(排除Merge.txt本身)
      - name: Merge all TXT files
        run: |
          # 清空Merge.txt(如果存在)
          > Merge.txt
          # 遍历所有TXT文件,排除Merge.txt,将内容追加到Merge.txt
          find . -type f -name '*.txt' ! -name 'Merge.txt' | sort | while read fname; do
            echo "=== 来自文件: $fname ===" >> Merge.txt
            cat "$fname" >> Merge.txt
            echo -e "\n\n" >> Merge.txt # 添加空行分隔不同文件内容
          done

      # 提交合并后的文件到仓库
      - name: Commit and push changes
        run: |
          git config --global user.name "GitHub Actions"
          git config --global user.email "actions@github.com"
          git add Merge.txt
          # 检查是否有变更,避免无变更时提交失败
          if git diff --cached --quiet; then
            echo "Merge.txt无变更,无需提交"
          else
            git commit -m "Auto-merge TXT files into Merge.txt"
            git push
          fi

关键说明:

  • 触发优化:通过paths: ["**.txt"]限制仅当TXT文件变更时触发工作流,减少不必要的运行
  • 排除目标文件:合并时用! -name 'Merge.txt'避免把Merge.txt本身再合并进去
  • 格式化分隔:添加了文件标识和空行,让Merge.txt内容更易区分不同源文件
  • 提交校验:检查是否有实际变更,防止无内容变化时触发无效提交

内容的提问来源于stack exchange,提问作者Mathias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:51:02