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

Git从BranchA创建新BranchB后无法显示分支变更文件求助

问题原因及解决步骤

核心错误点

  1. 分支创建命令误用:git branch -c 是重命名当前分支的命令,并非基于当前分支创建新分支。虽然执行后你得到了名为 BranchB 的分支,但这个操作本质是把 old-change-1947545 改名为 BranchB,而非复制分支(不过这步操作本身不会导致丢失原分支变更,后续推送逻辑才是关键)。

  2. 推送目标错误:你最后执行的 git push origin HEAD:refs/for/main 是向 Gerrit 提交合并到 main 分支的评审请求,Gerrit 展示的是该提交相对于 main 分支的增量变更。如果 old-change-1947545 分支的变更本身就是基于 main 的差异,那么当你提交新变更后,Gerrit 只会显示你新增的 src/test.py 变更(原分支的变更会被视为已有差异,不会重复展示)。但本地的 BranchB 其实包含原分支的所有变更,只是远程评审页面的展示逻辑导致你看不到。

正确操作流程

如果你需要保留 old-change-1947545 分支,并基于它创建新分支 BranchB 包含原分支变更+新修改,按以下步骤执行:

  • 切换到原分支:
    git checkout old-change-1947545
    
  • 基于当前分支创建新分支 BranchB:
    git checkout -b BranchB
    
  • 修改 src/test.py 并提交:
    vi src/test.py
    git add src/test.py
    git commit -m "add print line to test.py (based on old-change-1947545)"
    
  • 若要将 BranchB 推送到远程仓库保存:
    git push -u origin BranchB
    
  • 若要向 Gerrit 提交合并到 main 的评审(此时 Gerrit 会展示 BranchB 相对于 main 的所有变更,包括原分支和新修改):
    git push origin HEAD:refs/for/main
    

验证本地分支是否包含原变更

在本地切换到 BranchB 后,执行以下命令查看与 main 分支的差异,确认原分支变更是否存在:

git diff main..BranchB

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:58:12