[請益] Git reset 後,再回到下一版

看板PHP作者 (NA)時間11年前 (2014/09/05 18:50), 11年前編輯推噓2(2012)
留言14則, 4人參與, 最新討論串1/1
最近在學習使用 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

09/05 19:08, , 1F
記得可以回到某個commit 應該是 git reset ooxx
09/05 19:08, 1F

09/05 19:09, , 2F
ooxx 是每個 commit 都會產生的 sha hash code
09/05 19:09, 2F

09/05 19:09, , 3F
印象中是這樣 有錯誤請版友指正一下 :P
09/05 19:09, 3F

09/05 19:15, , 4F
git reflog
09/05 19:15, 4F

09/05 19:15, , 5F
用 reflog 找出那個 commit 的 hash 之後看你要怎麼做
09/05 19:15, 5F

09/05 19:15, , 6F
以你的狀況 B 是接在現在的 A 後面, 那其實可以直接 merge
09/05 19:15, 6F

09/05 19:16, , 7F
git 會判斷 B 確實是接在 A 後面然後做 fast-forward
09/05 19:16, 7F

09/05 19:16, , 8F
一般的狀況 B 不是接現在的 head 後面的話會用 cherry-pick
09/05 19:16, 8F

09/05 19:17, , 9F
這種狀況下會把同樣的內容新 commit 一份接到 head 後面
09/05 19:17, 9F

09/05 19:18, , 10F
一樓的 git reset xxx 的方法則是比較暴力, 直接回到那時
09/05 19:18, 10F

09/05 19:18, , 11F
的狀況, 所以如果中間有增刪的話會換那些不見
09/05 19:18, 11F

09/05 19:19, , 12F
基本上有這種狀況的 reset 多半要 --hard 才會執行
09/05 19:19, 12F

09/06 10:02, , 13F
已經試出來了,感謝樓上3位! LPH大竟然還詳細解說,太
09/06 10:02, 13F

09/06 10:03, , 14F
使我感動了 QQ
09/06 10:03, 14F
文章代碼(AID): #1K2PLpU8 (PHP)
文章代碼(AID): #1K2PLpU8 (PHP)