一早起來,手上的程式還沒 push , repo 的版本已經往前狂跳了(驚),怎麼辦?
兩年前我寫過這篇:
不過時間隔太久了,我竟然要 google 才抓得到這篇文。顯然對於每日開工的流程有必要好好重新整理啊(抓頭)~~
正常來說,工作到一個預定的 milestone ,一定會主動進行 git push ,這你知、我知、獨眼龍也知,所以應該不會出現在一天開工的時候。開工時發現 repo 上的變動,大概可以分成三種:不需要 merge 、 不想 merge (喂) 、 有 conflict 需要 merge 。
- Scenario I: Nothing serious done...(那就沒什麼好擔心的啦~~)
- git pull origin master
- Scenario II: Something done, wanna undo, no conflict => rollback changes (這什麼情況?就是人家做得好,直接接收啦~~)
- git reset --hard HEAD^
- 恢復到本地端最後一次 commit 前的狀態, 但修改過的檔案仍會還原
- git pull origin master
- Scenario III: Something done, conflicts BIG TIME !!
- IIIa. just merge it (這什麼情況?就是人家做得好,merge的部分好解決,直接接收啦~~)
- git pull origin master
- merge XXXX...YYYY
- IIIb. stash->rebase->reset (merge 會很麻煩,剛開工先不要處理這麼硬的工作,晚點再說啦~~)
- git add .
- git commit -m "push to stash"
- 這個動作很重要,任何pull之前,要確保本地變動有存下來!!
- git pull --rebase origin master
- merge XXXX...YYYY (保留 repo 的版本,捨棄 local 的變動)
- git reset --soft HEAD~1
- 恢復到本地端 commit 前的狀態, 但修改過的檔案仍不變
參考資料:
沒有留言:
張貼留言