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

如何让Git自动处理仅poetry.lock文件的交互式变基冲突?

自动处理交互式变基中仅poetry.lock的冲突

方法思路

通过编写自定义冲突解决脚本,让Git自动检测冲突文件:仅当poetry.lock单独冲突时,执行预设的修复逻辑;若pyproject.toml或其他文件也存在冲突,则保留人工处理流程。


步骤1:编写冲突处理脚本

创建一个可执行脚本(比如resolve-poetry-lock.sh),路径建议放在用户目录的bin文件夹下(如~/bin/resolve-poetry-lock.sh),内容如下:

#!/bin/bash

# 获取所有冲突文件列表
conflicted_files=$(git diff --name-only --diff-filter=U)

# 仅处理poetry.lock单独冲突的场景
if [[ "$conflicted_files" == "poetry.lock" ]]; then
    # 执行你原本的popo命令逻辑
    git reset -- ./poetry.lock
    git checkout -- ./poetry.lock
    poetry lock --no-update
    git add ./poetry.lock
    exit 0  # 返回0表示冲突已解决
elif echo "$conflicted_files" | grep -q "pyproject.toml"; then
    # 若pyproject.toml也冲突,提示人工处理
    echo "⚠️ pyproject.toml存在冲突,请手动处理后继续"
    exit 1
else
    # 其他冲突场景,交由人工处理
    exit 1
fi

给脚本添加执行权限:

chmod +x ~/bin/resolve-poetry-lock.sh

步骤2:配置Git关联脚本与poetry.lock

执行以下Git配置命令,让Git识别到poetry.lock文件需要使用自定义脚本处理冲突:

# 注册自定义冲突解决驱动
git config --global merge.poetrylock.driver '~/bin/resolve-poetry-lock.sh %A %B %L %P'
git config --global merge.poetrylock.name 'Auto-resolve poetry.lock conflicts'

# 在当前仓库的.gitattributes中添加规则(可提交到仓库供团队使用)
echo "poetry.lock merge=poetrylock" >> .gitattributes

步骤3:验证效果

启动交互式变基(如git rebase -i HEAD~5),当遇到仅poetry.lock的冲突时,Git会自动调用脚本完成修复,无需手动执行命令;若pyproject.toml或其他文件冲突,脚本会提示你手动处理,处理完成后执行git rebase --continue即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:36:12