天天看點

Git 一些錯誤的解決方法

注:Git初學者的個人經驗記錄,僅供參考

1. Pull is not possible because you have unmerged files.

症狀:pull的時候

$ git pull

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'

應該是因為local檔案沖突了

解決方法:

引用——

1.pull會使用git merge導緻沖突,需要将沖突的檔案resolve掉 git add -u, git commit之後才能成功pull.

2.如果想放棄本地的檔案修改,可以使用git reset --hard FETCH_HEAD,FETCH_HEAD表示上一次成功git pull之後形成的commit點。然後git pull.

注意:

git merge會形成MERGE-HEAD(FETCH-HEAD) 。git push會形成HEAD這樣的引用。HEAD代表本地最近成功push後形成的引用。

就我的經驗,有時候會莫名其妙地出現這種狀況,而且Untracked files 還特别多(實際上自己可能隻改了一兩個檔案),是以隻好先儲存好自己确定做出的local的修改,然後用git reset --hard FETCH_HEAD回到上次成功pull之後的點,然後再pull就沒有問題了

2.You are not currently on a branch.

症狀:有一次pull的時候又出現沖突,這回用“git reset --hard FETCH_HEAD”方法都不行了,出現:

$ git pull
You are not currently on a branch, so I cannot use any
'branch.<branchname>.merge' in your configuration file.
Please specify which remote branch you want to use on the command
line and try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.      

解決方法:

首先git checkout -b temp

其次git checkout master

即可恢複到master repository的狀态,然後就可以pull了

參考:

http://skywhsq1987.iteye.com/blog/1814137

http://slacy.com/blog/2011/04/git-pull-says-you-are-not-currently-on-a-branch/

http://ddmytrenko.blogspot.com/2012/03/git-not-currently-on-any-branch.html 

git