三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Learn Git Branching:提交的技巧

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 回来

解题步骤

# 1. 把 caption 分支上的提交顺序对调(把 newImage 的提交放到最上面)gitrebase-iHEAD~2# 在交互界面中,把 newImage 对应的提交移到 caption 提交的上方# 2. 现在 newImage 在最顶,对它进行修改gitcommit--amend# 3. 再次用 rebase -i 把顺序换回来(caption 在上,newImage 在下)gitrebase-iHEAD~2# 4. 把 main 和 newImage 分支指向对应提交gitbranch-fmain HEADgitbranch-fnewImage HEAD~1# 5. 重置到正确位置gitrebase caption main

核心思路总结

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

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

← 返回列表