You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

场景复现步骤

如果需要复现这个冲突场景,按以下步骤操作即可:

  1. 克隆示例仓库:
    git clone https://github.com/chhh/git-rebase-conflict-resolution
    
  2. 进入仓库目录并切换到feature分支:
    cd git-rebase-conflict-resolution
    git checkout feature
    
  3. 执行带theirs策略的rebase触发冲突:
    git rebase -Xtheirs master
    

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

火山引擎 最新活动