Git变基冲突:如何批量删除本地已删但远程修改的文件?
批量处理Rebase中"deleted by them"的冲突文件
绝对有更省心的办法!不用手动逐个执行git rm处理这些冲突文件,一行命令就能批量搞定所有标记为deleted by them的条目:
核心命令
git status --porcelain | grep '^D ' | awk '{print $2}' | xargs git rm
命令拆解
我来给你拆解下每个环节的作用,方便你理解:
git status --porcelain:输出机器易读的简洁状态格式,避开了常规git status里的冗余描述,方便后续过滤操作。grep '^D ':筛选出以D(D后面跟两个空格)开头的行,这正是deleted by them类型冲突的专属标识。awk '{print $2}':提取每行的第二个字段,也就是冲突文件的完整路径。xargs git rm:把所有提取到的文件路径一次性传给git rm,实现批量删除。
后续操作
执行完上面的命令后,跑一遍git status确认,那些Unmerged paths里的deleted by them条目应该都消失了,接着就能继续完成rebase:
git rebase --continue
场景复现步骤
如果需要复现这个冲突场景,按以下步骤操作即可:
- 克隆示例仓库:
git clone https://github.com/chhh/git-rebase-conflict-resolution - 进入仓库目录并切换到feature分支:
cd git-rebase-conflict-resolution git checkout feature - 执行带
theirs策略的rebase触发冲突:git rebase -Xtheirs master
内容的提问来源于stack exchange,提问作者Dmitry Avtonomov




