mainM1M2
- A
a1f3022挂在 M1 - B
b2e7d51挂在 M1
分叉未重放
main 已到 M2。A/B 还接在旧 M1 上,PR 会显得落后。
版本协作 · 版本协作
把一串提交摘下来、逐个接到新基底上重放,得到一条直线历史;它改写提交哈希,所以只重写自己独有的历史。
下面就是 rebase 时那条轨道。默认 A/B 还接在旧 M1;冲突会把失败写在 B 车厢上;解决后才会出现带新哈希的 A′/B′。
第 0 步先打开:终端跑 git fetch 再 git rebase origin/main。下面就是那条要重接的轨道。
mainM1M2
a1f3022挂在 M1b2e7d51挂在 M1分叉未重放
main 已到 M2。A/B 还接在旧 M1 上,PR 会显得落后。
原因:feature 从旧 M1 分叉。下一步:开始 rebase,或先看冲突会怎样卡住。
车厢刚走过的路,这里只给命名。
rebase 整理自己的线,不改写别人的线。
git fetch → git rebase origin/main → 冲突就 add 再 --continue → 私有分支才 --force-with-lease。git rebase --abort。只改「有没有人在用这条分支」,结果完全不一样。
只有自己在写。历史是直线,PR diff 干净,lease 发现远端有新提交会停下。
队友已基于旧 sha 开发。强推后他们的 origin 断裂,冲突反复出现。
队友已经在用的 feature 落后 main 了。想跟上又不让队友的 origin 断裂,哪种做法对?
术语的技术定义和行为以这些一手或权威资料为准。
和本知识点经常一起出现的概念。