如何过滤仅含POT-Creation-Date变更的.po文件不提交至Git
过滤仅POT-Creation-Date变更的PO文件方案
核心逻辑
只保留除POT-Creation-Date外还有其他内容变更的PO文件,完全仅该字段变更的文件直接取消暂存,不提交。
具体实现步骤
- 先获取所有已修改的PO文件:
CHANGED_PO_FILES=$(git diff --name-only --cached "*.po") - 遍历每个文件,检查是否存在非POT-Creation-Date的变更:
for FILE in $CHANGED_PO_FILES; do # 过滤掉diff中仅关于POT-Creation-Date的行 FILTERED_DIFF=$(git diff --cached "$FILE" | grep -vE '^[-+]"POT-Creation-Date: ') # 如果过滤后无内容,说明仅头部变更,取消暂存 if [ -z "$FILTERED_DIFF" ]; then git reset HEAD "$FILE" fi done - 提交剩余的有效变更:
git commit -m "Update translation files with actual content changes"
细节说明
--cached参数针对已暂存的文件操作,如果是直接对比工作区和仓库版本,可替换为git diff HEAD "$FILE"grep -vE用来排除所有以-或+开头、包含POT-Creation-Date的行,确保只保留实际翻译内容的变更记录
内容的提问来源于stack exchange,提问作者rffontenelle
相关产品推荐
相关产品推荐

