其他

2022.03.29

git rebase 步驟記錄


前情提要

搞了兩天的 rebase 終於成功解決了。

比較常碰到的問題是:

  • 明明用了 git rebase,最後合併的線圖卻依然像 merge 一樣,是雙線合併,而不是單插一枝花在 main 後面。
  • push 時出現很詭異的 commit 訊息,例如:Merge branch 'home' of https://gitlab.com/sample.git into home (到底為什麼 home 要 merge home…)

後來問了朋友,終於成功 rebase 變成一條線啦 ((撒花,以下紀錄步驟,希望下次不要再撞牆惹

get rebase 指令

試試這個方法

以往在 rebase 之前,我都有先把 branch 上傳到遠端。但建議比較好的做法會是:在本機 rebase 之後,再推到遠端,避免本機跟遠端的線圖不一樣,git 就會一直要求你 pull & push。(是說我好像就一直卡在這裡….)

假設我今天在本機端開了一個 branch:subBranch,然後我要用 rebase 接到 main 後面。

切換到 subBranch

git checkout subBranch

使用 rebase 指令

git rebase main

解衝突

接著視情況需要解衝突,假設衝突已解完:

git add .
git rebase --continue

強制 push 分支

如果在這之前,不小心先把 branch 推到遠端的話,可能會造成線圖不一致,需要你 pull & push 的提示。

在此階段,請不要 pull,然後強制 push:

git push -f origin chart

這個用法,會把線上的 chart 分支移除,然後重新推送本機端的 chart。所以如果該 branch 有其他同事的心血,記得先行備份喔。

▼ 做到這個步驟,chart 應該已經插在 main 後面了。

合併 commit 訊息

最後,我們切回 main,合併 rebase 後的 commit

git checkout main
git merge chart

刪除 chart 分支

我自己的習慣是會把無用的分支給移除,第一行刪除本機 branch,第二行刪除遠端 branch。

如果一開始沒有上傳到遠端,那就不需要輸入第二行的指令囉!

git branch -d chart
git push origin --delete chart

以上,就是我目前使用 rebase 的步驟,踩雷踩了兩三天,看了好多不同的教學,卡在一個神奇的地方 😂,但幸好順利解決了,感謝朋友,感謝大大 m(_ _)m

guest
0 則留言
Inline Feedbacks
View all comments
Copyright (C) MUKI space* / Reborn Theme All Rights Reserved.