更新於 2024/11/13閱讀時間約 2 分鐘

【Github】refusing to merge unrelated histories

這是剛剛才發生的事,新鮮出爐
在完成短網址產生器的作業後,正準備將檔案上傳 Github 建立了新的 respository ,就像之前練習開新分支和合併一樣,按下了 merge 以後……
等愣!跳出了錯誤訊息:
refusing to merge unrelated histories
在驚恐之餘,趕緊搜尋了這個訊息
裡面提到的方式是直接設定成允許合併 但能用圖形化介面處理的事情就先不用命令(x)
我注意到網頁中一個相關連結上的「rebase」 這個指令在我使用 sourcetree 的時候就有看到,就在 merge 旁邊
於是我動手開始查這兩個指令的差異
簡單的列出差異點如下:
*Merge 1. 在主分支上對副分支執行,將副分支合併進來 2. 不影響歷史紀錄 3. 會建立一個新的 commit 用來 merge
*Rebase 1. 在副分支上對主分支執行,副分支將會接到主分支後面 2. 會更動歷史紀錄(commit的時間等) 3. 不會建立用來 rebase 的 commit  副分支會複製一份新的 commit(SHA-1值不同) 接到主分支後面
考量到將以 Github 的分支為主 我嘗試了在本機端的分支對來自 Github 的分支執行 rebase
伴隨著進度條完成,畫面上的 commit 變為同一條分支 而我原先本機端參差不一的 commit 建立日期瞬間全部變得一模一樣
雖然 commit 依然按照先前的順序一個不少的在上面,但心中有種什麼不見了的感覺……(是歷史紀錄)
為了寫這篇文章,我又重新回去翻了遍參考連結 裡面有提到 rebase 的主副誰先誰後,以最後的檔案來說沒什麼差別
那如果我以 Github 的分支,對本機端的分支執行 rebase 呢……?
按照參考連結的內容,我試著 reset 回還沒 rebase 的 commit 上 但是本機端的 commit 的 date 並沒有改變,看來是回不去了(?)
之後有機會再試試看用新分支 rebase 本機的分支好了
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.