git-HEAD detached from問題處理

HEAD detached from就是俗稱斷頭的git狀況, 由於在上傳發生舊蓋新的情況, 又想用 git checkout <commit hash> 的方式找回來, 結果導致發生斷頭了。

討論很多, 僅列出2個參考, 或許每人遇到的狀況不同, 但應不難找到相似的: https://stackoverflow.com/questions/10228760/fix-a-git-detached-head, https://stackoverflow.com/questions/2364147/how-to-get-just-one-file-from-another-branch/2364223

處理的過程大致如下, 不過我被蓋掉的檔案是二進位檔無法直接merge合併回來, 所以有個步驟會不太一樣。先查status, 確定發生斷頭案

建立個新的暫存branch, 例如: temp。然後這裡要做的就是想辦法救回你要的內容, 修改好, commit回去temp分支內

再來回到master去

由於master中的檔案是舊的、已被蓋錯了, 而temp中的則是重新救回來的, 由於我的檔案是二進位, 和一般文字檔類的處理方式不同, 所以這時要由temp中重新checkout正確的檔案來到master中, 用 git checkout <branch name> -- <file.ext> , 正確檔案就蓋回來了。

再來就是照一般步驟再做commit及psuh就好了, 而暫存的branch也可以做刪除了。

發表留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料