在使用Git pull命令將遠程代碼拉取到本地的時候,出現錯誤,沒法拉取。錯誤以下:java
Pull is not possible because you have unmerged files. Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.
緣由:git
實際上,git pull命令是將git fetch和git merge兩個命令合併起來的一個「綜合」命令。app
它的做用是:將遠程的代碼和更新,拉取到本地而且更新本地的代碼。其中的一個弊端是,你的本地工做目錄在未經確認的狀況下就會被遠程分支更新,這裏咱們暫且不提。fetch
正是git merge命令致使出現了上邊使用git pull出現的問題。因此這就須要將本地與遠程的代碼之間的衝突解決掉,才能夠進行正常的git pull。下面介紹2個方面的辦法:code
(1)若是想保留本地的修改,使用下面的命令,將文件add,而後commit。開發
git add -u git commit -m "描述" git pull
(2)想保留本地的修改,可是還不想新加一次commit,可使用git stash命令。it
git stash 可用來暫存當前正在進行的工做, 好比想pull 最新代碼, 又不想加新commit, 或者另一種狀況,爲了fix 一個緊急的bug, 先stash, 使返回到本身上一個commit, 改完bug以後再stash pop, 繼續原來的工做。io
git stash git pull git stash pop
這種方法是一種比較廣泛的作法,我在開發的時候常常採用這種方法。class
(3)放棄本地的修改,可使用下面的語句。file
git reset --hard FETCH_HEAD git pull
FETCH_HEAD表示上一次成功git pull以後造成的commit點。
注意:git merge會造成MERGE-HEAD(FETCH-HEAD) 。git push會造成HEAD這樣的引用。HEAD表明本地最近成功push後造成的引用。