Git从BranchA创建新BranchB后无法显示分支变更文件求助
问题原因及解决步骤
核心错误点
分支创建命令误用:
git branch -c是重命名当前分支的命令,并非基于当前分支创建新分支。虽然执行后你得到了名为BranchB的分支,但这个操作本质是把old-change-1947545改名为BranchB,而非复制分支(不过这步操作本身不会导致丢失原分支变更,后续推送逻辑才是关键)。推送目标错误:你最后执行的
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
相关产品推荐
相关产品推荐

