2016年1月27日 星期三

git "daily workflow"


一早起來,手上的程式還沒 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 前的狀態, 但修改過的檔案仍不變
參考資料:

沒有留言:

張貼留言