事情是這樣發生的,由於直播班第二週和第三週的作業內容很相似,於是我就把第二週的作業資料夾「複製」了一份,作為第三週的基底,並把第三週的作業內容完成後,準備上傳到一個新建的 week3 遠端 repository (以下簡稱repo)
按照往常的流程,先用 git init 初始化,此時 git 就有跳出訊息,說明這個資料夾已經指向 week2 的 repo,但是我完全忽略這個提示訊息,還是持續操作,直到指定 git repo 指向的時候,它無法綁定我新建的 week3 repo,我還是不懂為什麼跳錯😂,直接強制的把它 push 上去了,沒想到悲劇就此發生了....
我的week3資料庫沒有任何動靜,反而是week2的作業內容被覆蓋了
由於我是使用「複製」的方式,所以其實第二週和第三週兩個資料夾指向的遠端 repo 會是同一個!
於是乎,我先重建了一個資料夾,把第三週的作業內容複製過去,push 到 week3 repo後,再回來修正剛剛的錯誤,開始了這一次的 git 修復之旅
第一個想法是回到上一次的 commit 狀態,所以用 git log 查詢了commit 紀錄,然後用 git reset --hard、git reset HEAD^...,各種方式想要回復成上一個 commit 版本,這一段連我自己都搞不懂發生了什麼事,就是亂試一通,只能先流水紀錄大概過程
回到上一次的 commit 狀態貌似是不可行了,所以我一度想放棄,乾脆把整個 week2 repo 焚毀😂,直接重建一個還比較快,但是一想到這只是我的小小作業,內容不過是100行以內可以解決的程式碼,實戰的時候,總不可能把公司的大檔案給銷毀重來吧,必須回去好好解決問題!
後來就放棄復原 commit 版本的這個做法,想說把 week2 的作業內容重新push上去,覆蓋錯誤的內容試試看
這時候 git 的回應內容我有點忘了,不過大致應該是說:遠端和本地端的兩個檔案有衝突,需要先 pull 遠端的資料夾下來,解決衝突才能 push 新的上去 所以我先把 week2 的作業內容備份好,依照指示把遠端的檔案 pull 下來,然後把剛剛備份好的內容貼回到正確的位置,整理和復原成我要的樣子後,再重新 commit 和 push 一次,居然就順利解決了!好像也沒什麼難的...
所以本次結論:
- 請不要偷懶,好好為不同專案建立新資料夾
- git 給的回應都要好好的看,不要不理它啊!
- git 並沒有想像中可怕,我一定可以跟它和平相處的
荒謬的個人的作業覆蓋驚魂記到此結束🙀
我是Amber,前端學習中,歡迎交流討論🧸