1. 程式人生 > >git pull——git庫版本與本地庫版本衝突總結

git pull——git庫版本與本地庫版本衝突總結

git庫版本與本地庫版本衝突:個人定義為就是git庫版本與本地庫版本不匹配,詳細地說就是我們從git庫clone克隆下來的版本,經過修改後提交併合併成新版本,但是後來又將git庫的該版本撤銷了,而本地沒有撤銷該版本,此時就是本地庫擁有此版本而git庫中沒有此版本。這樣在使用git pull或git pull origin master可能會出現:“Your local changes to the following files would be overwritten by merge”或"PULL  不可用,因為您尚有未合併的檔案“或"自動合併失敗,修正衝突後提交修正後的結果"

“Your local changes to the following files would be overwritten by merge”這樣的錯誤,意思就是你的本地修改以下檔案將被覆蓋合併。

情況一

如果只會提示:“Your local changes to the following files would be overwritten by merge”這樣的錯誤,這樣的錯誤是因為本地庫中有修改,但是沒有提交到git庫中,而現在使用git pull或git pull origin master來更新程式碼就會提示本地修改的檔案會被覆蓋合併,雖說會覆蓋合併,其實根本就沒有合併。以前為了同步git庫對應的版本,而使用git checkout -f來撤銷自己的修改,這樣實在是太愚蠢的做法。原來我們是可以使用git stash暫時擱置當前已做的修改,倒退到改動之前的狀態來進行其他的必要操作(比如釋出,或者解決一個bug,或者branch,等等)。此時就可以使用git pull或git pull origin master來更新程式碼,然後使用git stash pop撤銷最後的一個擱置

(可能有多次擱置,檢視擱置使用git stash list)。

情況二

如果通過情況一的解決辦法還是不行,如果遇到"PULL  不可用,因為您尚有未合併的檔案“或"自動合併失敗,修正衝突後提交修正後的結果"。如:



此時就有可能是本地庫中擁有git庫中沒有的版本,到檢視git庫的版本狀態以及本地使用git log檢視本地的版本狀態,本地檢視結果如下:


解決辦法就是我們本地也要將"觸控式螢幕跳點問題"這個版本撤銷,當然也可以撤銷到比它更前的版本。如:

使用git reset --hard 03a280c275bbd48c61417948173cbabf5bc71a69回退到"LCD  PWM背光調節"這個版本。其中03a280c275bbd48c61417948173cbabf5bc71a69為對應版本commit後面的字串


最後使用git pull origin master成功更新了程式碼。

git branch:檢視分支

git checkout master 切換到分支‘master’