高级篇–第三关
本文最后更新于47 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

1. 初始状态分析

  • 当前分支main 指向 c4bugFix 指向 c5HEAD 指向 c2
  • 提交历史c0 → c1 分叉为 mainc2 → c4)和 bugFixc3 → c5)。
  • 目标结构:
    • main 需指向 c6(通过相对引用 + 直接引用移动);
    • bugFix 需指向 c0(通过直接引用或相对引用);
    • HEAD 需指向 c1

2. 核心概念:相对引用(~ 符号)

  • 作用:~^的简化版,用于快速移动到多个父提交(连续向上找父提交)。
    • HEAD~3:向上移动 3 个父提交。
  • 直接引用(提交哈希):通过提交的哈希值(如 c0c1)直接定位提交,强制移动指针。

3. 通关步骤(分阶段执行)

阶段 1:移动 HEADc1

当前 HEAD 指向 c2,需要移动到 c1c2 的父提交)。

执行命令:

bash

 git checkout HEAD^
  • 作用HEADc2 移动到父提交 c1(分离状态,显示 HEAD* 指向 c1)。

阶段 2:移动 bugFixc0

需要让 bugFix 分支指向 c0,可通过直接引用 c0 实现。

执行命令:

bash

 git branch -f bugFix c0
  • 作用:强制将 bugFix 分支指针移动到 c0(覆盖原有指向 c5 的指针)。

阶段 3:移动 mainc6

  1. 需要让 main 分支指向 c6,可通过直接引用 c6 实现:bash git branch -f bugFix c0
    • 作用:强制将 main 分支指针移动到 c6

阶段 4:最终调整(确保结构匹配)

执行完上述步骤后,检查:

  • HEAD 指向 c1(分离或依附 main,需调整为分离);
  • bugFix 指向 c0
  • main 指向 c6
  • 若有偏差,用 git checkout <提交哈希>git branch <分支名> <提交哈希> 修正。

4. 关键知识点延伸

  • ~^ 的区别:
    • ^:移动到单个父提交(分叉时可选择父提交,如 ^1^2 选第一个或第二个父提交)。
    • ~:移动到多个连续父提交(默认选第一个父提交,叠加表示多次移动)。
  • 直接引用的强制修改git branch <分支名> <提交哈希> 可强制覆盖分支指针,适合调整历史结构。

简单说,这关的核心是 “组合使用 ~ 相对引用和直接引用”,通过符号快速移动指针 + 强制修改分支历史,掌握 Git 中灵活调整提交结构的高阶技巧 。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇