1. 程式人生 > 實用技巧 >【IDEA】程式碼未提交(commit)拉取(pull) 遠端程式碼導致程式碼全部丟失的bug

【IDEA】程式碼未提交(commit)拉取(pull) 遠端程式碼導致程式碼全部丟失的bug

問題描述

今天早上拉取公司伺服器程式碼後遇見了一個非常奇怪的問題:自己先前費了兩天寫的程式碼檔案全部丟失了!!!而且馬上到了任務截止時間,此刻我的心情…

在這裡插入圖片描述

分析問題

冷靜了3秒後,憑藉多年的經驗我的第一反應看控制檯 Event Log 有沒有提示什麼東東,果然我發現一絲絲線索:
在這裡插入圖片描述
通過上面的警告資訊後,原來是由於我未 commit 的檔案在更新之前自動儲存在 stash,接下來順便了解了 Git stash 的作用:將目前還不想提交的但是已經修改的內容進行儲存至堆疊中,後續可以在某個分支上恢復出堆疊中的內容(相當於將程式碼進行隱藏),看到這裡讀者們是不是和我一樣突然就悟出了一個真理!!! 那就是沒有提交的內容都會儲存至堆疊中


在這裡插入圖片描述

解決問題

此刻我們想將隱藏的程式碼進行恢復,那麼我們將會使用到 Git unstash命令,還好【IDEA】編輯器已經為我們提供了這個選項。VCS–>git–>Unstash


選中你剛剛的stash 先檢視其內容,可以看到我們之前丟失的程式碼檔案列表如下所示:


接下來選中Pop stash,點選pop stash即可

本以為一切順利,萬事大吉。但萬萬沒想到又出了一個問題。不過此刻的我穩如老狗:

在這裡插入圖片描述
根據右下角螢幕的錯誤資訊提示:本地更改會被merge所覆蓋


so 這裡點選view them 然後就看到了下面兩個檔案資訊:

.idea目錄下所有檔案,我已經在.gitignore中宣告忽略了,所以我的localChanges中並沒有該檔案。排查一番後檢視git提交的歷史,發現是其他同事將這個目錄下的檔案加入了版本控制並提交到git倉庫中