如何通过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
相关产品推荐
相关产品推荐

