Learn Git Branching:提交的技巧

这道题,是 Learn Git Branching 的练习题,叫"提交的技巧 #1"。

题目分析

当前状态(左侧图):

  • C0 ← C1 ← C2 ← C3
  • main 指向 C1
  • newImage 指向 C2
  • caption*(当前分支)指向 C3

目标状态(右侧图):

  • maincaption 最终指向同一个提交
  • newImageC1 之后(单独一条线)
  • 整体结构是对 newImage 的提交做了修改后,caption 的内容被重新应用上去

题目意图

你需要修改 newImage(C2)这个提交,但 caption(C3)依赖它。直接修改 C2 很麻烦,所以正确思路是:

git rebase -i 调整顺序 → 修改 → 再 rebase 回来

解题步骤

bash 复制代码
# 1. 把 caption 分支上的提交顺序对调(把 newImage 的提交放到最上面)
git rebase -i HEAD~2
# 在交互界面中,把 newImage 对应的提交移到 caption 提交的上方

# 2. 现在 newImage 在最顶,对它进行修改
git commit --amend

# 3. 再次用 rebase -i 把顺序换回来(caption 在上,newImage 在下)
git rebase -i HEAD~2

# 4. 把 main 和 newImage 分支指向对应提交
git branch -f main HEAD
git branch -f newImage HEAD~1

# 5. 重置到正确位置
git rebase caption main

核心思路总结

步骤 操作 目的
rebase -i HEAD~2 换序 把要改的提交移到顶部
commit --amend 修改该提交内容
rebase -i HEAD~2 换回 恢复原来顺序
移动分支指针 让 main/newImage 指向正确位置

这道题的核心考点就是:当你想修改历史中间某个提交时,先用 rebase -i 把它"浮"到顶部,改完再换回来

相关推荐
郑州光合科技余经理17 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我1234518 小时前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lcr3s1 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git
玄芯散人2 天前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
寺中人2 天前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
荔枝梅梅2 天前
新手程序员 SSH 第一课:从 Git 仓库连接失败理解 SSH 协议与密钥配置
git
玄芯散人2 天前
【筑基·057】Git代码时光机:版本控制入门到分支管理
git·版本控制·嵌入式开发
szephyr2 天前
Git 分支管理实战:feature/release/hotfix 怎么用才不乱
git·分支管理·团队协作·工作流·hotfix
一木 之林2 天前
手搓家庭服务器:二手装机、Docker部署、端口映射与frp内网穿透
服务器·人工智能·git·编辑器
烛之武2 天前
Git教程笔记
git·gitee