Git pull時出錯

在使用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後造成的引用。

相關文章
相關標籤/搜索