Monday, April 17, 2017

變更 git 歷史記錄後必須要做的事情

這幾天因為之前沒有注意到作者欄沒有設定好,結果留了一些不正確的作者名稱到 repository 的 commit 裡。

在 Github 的 Changing author info 說明中有提到,可以使用下面這個 script 來修改 commit 中的欄位。

但是沒有講到如果遠端的 repository 有設定了 tracking branch 到被修改影響到的 branch 上的話要怎麼辦,然後我不小心就踩到了,多了幾個內含有之前寫錯了作者的 commit 的支線出來。

模索半天之後,有點苦的做了 git rebase -i 最早的沒問題的版本 把有錯的 commit 都刪掉後,重新 git push --force --tags origin 'refs/heads/*' 到污染到的遠端檔案庫上,還好數量不多。

然後,有追蹤被修改分支的其他檔案庫要執行 git fetchgit checkout -B master (假設 tracking branch 是 master) 來更新本地端的檔案庫。這邊的 -B 是建立或更新 branch 的意思,單純 -b 的話就只能建立,在這邊需要更新,因此要使用 -B 選項。