1. 程式人生 > 實用技巧 >Please commit your changes or stash them before you merge問題解決

Please commit your changes or stash them before you merge問題解決

問題描述

error: Your local changes to the following files would be overwritten by merge:
    xxx/xxx/xxx.c
Please commit your changes or stash them before you can merge.
Aborting

問題分析

原因是 其他人/或你自己 修改了xxx.c並提交(git add .)到版本庫中去了,你本地又想再提交xxx.c,
這時候你進行git pull操作就好出現衝突了,解決方法,在上面的提示中也說的很明確了。進行git commit或者git stash操作。

解決辦法

1、保留本地的修改 的改法

  1)直接git commit本地的修改 ——一般不推薦這種方法,因為可能你還想修改該檔案

  2)通過git stash——通常使用該方法

git stash
git pull
git stash pop

步驟解析:

git stash: 備份當前的工作區的內容,從最近的一次提交中讀取相關內容,讓工作區保證和上次提交的內容一致。同時,將當前的工作區內容儲存到Git棧中。

git pull 或者 git pull <remote> <branch>:拉取程式碼

git stash pop: 從Git棧中讀取最近一次儲存的內容,恢復工作區的相關內容。由於可能存在多個Stash的內容,所以用棧來管理,pop會從最近的一個stash中讀取內容並恢復。

此外還有:

git stash list: 顯示Git棧內的所有備份,可以利用這個列表來決定從那個地方恢復。

git stash clear: 清空Git棧。此時使用gitg等圖形化工具會發現,原來stash的哪些節點都消失了。

2、放棄本地修改 的改法 ——這種方法會丟棄本地修改的程式碼,而且不可找回

git reset --hard
git pull

Over....