tech-sjh

2012年5月11日 星期五

修改過檔案後直接 git pull 為何一定失敗?

原本已經習慣的 git pull 如果失敗,就 git stash 保留 working tree 再 git pull,最後 git stash pop
看 git auto merge 或有 conflict 再手動解之後 git add, git commit ...

但今天被問到為何直接修改檔案後 git pull 都會必須 stash 或 commit 時,卻答不出來

答案在 git help pull 的說明中,git pull 其實是 git fetch 再 git merge,而 merge 一定要是一個
branch,但在 working tree 內修改過的內容如果沒 commit 就不屬於這個 working tree 對應
的 branch,因此 git 會警告你要先 commit (之後會 auto merge 或 conflict),或者是依我目前
習慣的 git stash 暫存修改,等 git pull (主要是 merge) 之後再 git stash pop。不然可能會有遺
失 work tree 修改的風險。

stash 想成是 stack 就比較容易理解,0 在最上面是 top,數字越大放在越底下表示越舊
的資料,也符合一般圖解的 stack 示意圖。

習慣的動作習慣以後,本來就沒搞懂的、或遺忘細節,一被問就倒了 XD

沒有留言:

張貼留言

版權宣告、免責聲明


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款授權.
免責聲明: 本文所載資料僅供參考,並不構成投資建議,
讀者閱讀或使用該資料所導致結果需要自擔風險與責任,
作者概不承擔閱讀人行為之任何風險與責任。
除非有特別宣稱,作者言論並不代表所屬任何團體、公司、或其他人意見。