記錄一個壞習慣 XD 我這處女座的個性,大概每隔一陣子就會對專案的 commit 的歷史紀錄感到不順眼,想要對它大刀闊斧地診整頓一番。
如果只有整理 local 端的 commit 倒是簡單,只要用git-rebase
就好,但是如果 commit 已經上遠端了的呢?
只能來硬的了 XDDD
其實只要一條指令就可以將git-rebase
後的 commit 給送上遠端。
Engineering Tomorrow’s Systems)
危險的 force 指令(圖片來源:使用前請注意!-f
是個非常危險的指令,它可以無視一切先來後到的規則,讓你的 commit,直接取代線上所有內容。不是讓團隊進度付之一炬,不然就是像這些 Jenkins 的開發人員一樣不小心強制更新了 150 多個 github repos。真的做了你應該會被組員拖去套麻布袋 XD
強烈建議
做完才想到一件事。我是一個人開發沒錯,但我在兩台機器上都有程式碼,所以另一台的 repo 怎麼辦?
在開始抓程式碼覆蓋前,請先確認沒有要保存的程式或 commit,一旦執行了這些都會不見的!
對相應git push
,pull
當然也有相對應的強制指令:
不過一開始我並沒下完整分支,所以一直跳出 merge 的訊息。所以我回頭看了文件,發現它寫到:
-f, –force
When git fetch is used with <rbranch>:<lbranch> refspec, it refuses to update the local branch <lbranch> unless the remote branch <rbranch> it fetches is a descendant of <lbranch>. This option overrides that check.
似乎是需要完全指定分支才行。
如過上面一招不行還有另外一招組合技,先取回遠端數據庫的最新歷史紀錄
然後放棄目前所有檔案與 commit,還原成遠端版本
最後重新拉回來