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

如何从Branch-B/D2中移除Branch-A/D1的变更(Arc diff & Phabricator)

移除Branch-B中来自Branch-A的变更方案

前提说明

因为你的Branch-B已经推送到远程分支,操作时优先选择不修改历史的方案,避免影响协作的团队成员。以下分场景给出具体命令:


场景1:D1是单个独立提交

如果Branch-A上的D1对应一个单独的提交,用git revert反向生成撤销提交是最安全的方式:

  1. 找到D1对应的提交哈希值:可以在Branch-A执行git log查看,或者在Branch-B执行git log --oneline快速定位该提交的哈希。
  2. 切换到Branch-B:git checkout Branch-B
  3. 撤销D1的变更:git revert <D1的提交哈希>
    执行后Git会自动生成一个新提交,把D1的所有变更反向撤销。
  4. 推送到远程:git push origin Branch-B

场景2:D1是多个提交或通过合并引入的

如果D1是多个提交,或是通过合并操作引入到Branch-B的,需要找到对应的合并提交哈希:

  1. 查看Branch-B的提交历史,找到合并Branch-A的那个提交(执行git log --oneline,合并提交会显示Merge ...字样)。
  2. 执行撤销合并命令:git revert -m 1 <合并提交的哈希>
    这里-m 1表示保留当前Branch-B的原有内容,仅撤销合并进来的Branch-A变更。
  3. 推送到远程:git push origin Branch-B

风险操作(仅适合私有分支)

如果你的Branch-B是无人协作的私有分支,且允许强制推送,可以用变基改写历史:

  1. 切换到Branch-B:git checkout Branch-B
  2. 启动交互式变基:git rebase -i <D1提交之前的那个提交哈希>
  3. 在弹出的编辑界面中,找到D1对应的提交行,把开头的pick改成drop,保存退出。
  4. 强制推送到远程:git push -f origin Branch-B
    注意:这个操作会改写远程分支历史,其他人如果已经拉取过该分支,需要重新同步,可能造成代码冲突,非必要不要用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:41:06