看板 PHP 關於我們 聯絡資訊
最近在學習使用 Git, 遇到了一個問題, 假設我目前總共 Commit 了兩次為 A、B, 我使用了 reset 恢復到 A 後, 有辦法再回到 B 嗎? 用 git log 看,B 的 Commit 已經不見了… -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.92.52 ※ 文章網址: http://www.ptt.cc/bbs/PHP/M.1409914227.A.788.html ※ 編輯: nakahusa (118.169.92.52), 09/05/2014 18:51:22
duck10704: 記得可以回到某個commit 應該是 git reset ooxx 09/05 19:08
duck10704: ooxx 是每個 commit 都會產生的 sha hash code 09/05 19:09
duck10704: 印象中是這樣 有錯誤請版友指正一下 :P 09/05 19:09
akasan: git reflog 09/05 19:15
LPH66: 用 reflog 找出那個 commit 的 hash 之後看你要怎麼做 09/05 19:15
LPH66: 以你的狀況 B 是接在現在的 A 後面, 那其實可以直接 merge 09/05 19:15
LPH66: git 會判斷 B 確實是接在 A 後面然後做 fast-forward 09/05 19:16
LPH66: 一般的狀況 B 不是接現在的 head 後面的話會用 cherry-pick 09/05 19:16
LPH66: 這種狀況下會把同樣的內容新 commit 一份接到 head 後面 09/05 19:17
LPH66: 一樓的 git reset xxx 的方法則是比較暴力, 直接回到那時 09/05 19:18
LPH66: 的狀況, 所以如果中間有增刪的話會換那些不見 09/05 19:18
LPH66: 基本上有這種狀況的 reset 多半要 --hard 才會執行 09/05 19:19
nakahusa: 已經試出來了,感謝樓上3位! LPH大竟然還詳細解說,太 09/06 10:02
nakahusa: 使我感動了 QQ 09/06 10:03