Git push to the wrong branch

其實就是同事弄錯的事情經過

起因是同事想把Branch A倒退回前先前的 commit (rollback),下命令要直接對remote上的 branch 改指到某個 commit 上,但是因為工時太常(x)恍神(o)下錯命令…

這樣的結果變成 3d_test 的 HEAD 被定到 3d_new 的 HEAD^ 去,如果這時候比較 local 與 remote repository 會發現,local上3d_test的commit從與 3d_new 的 common ancestor commit node 之後就不一樣了。解決方法其實很簡單,先切換到被弄錯的branch上(在這邊是3d_test),因為 local 還有正確的 commits,所以只要 force push 就解決了:

不過,可以這樣做的前提,是 local 還有著 3d_test 的commit,萬一不小心手殘或者硬碟掛了,別人也沒有這個備份的話,那只能透過 git reflog 去撈回來。

可以發現到 origin/3d_test 指到 36b6b05 這個commit去了,而正確的commit是前一個 f0dc3b8 ,所以只要再來做個 force push 就可以

Leave a Reply

%d bloggers like this: