最近使用VScode,记过Git各种出错,这里整理归档一下:

1. git报错:Git:failed to execute git

问题原因:

  • Git没有设置用户信息

解决方案:

  • 设置user.email和user.name
$ git config --global user.email "xxx@xx.com"(后面是你的邮箱)
$ git config --global user.name "xxx"(设置你的用户名)

然后重新提交

2. git报错:Pull is not possible because you have unmerged files解决方法

  • 问题原因:

本地的push和merge会形成MERGE-HEAD(FETCH-HEAD), HEAD(PUSH-HEAD)这样的引用。HEAD代表本地最近成功push后形成的引用。MERGE-HEAD表示成功pull后形成的引用。可以通过MERGE-HEAD或者HEAD来实现类型与svn revet的效果。

  • 解决方案:

1. 将本地的冲突文件冲掉,不仅需要reset到MERGE-HEAD或者HEAD,还需要–hard。没有后面的hard,不会冲掉本地工作区。只会冲掉stage区。

git reset --hard FETCH_HEAD

2. git pull就会成功。

3. error:Cannot pull with rebase

git 执行git pull –rebase报错误如下:

error: Cannot pull with rebase: You have unstaged changes. 
error: Additionally, your index contains uncommitted changes. 

原因:如果有未提交的更改,是不能git pull的

解决:
先执行git stash
再执行git pull –rebase
最后再执行git stash pop

git stash #可用来暂存当前正在进行的工作
git stash pop #从Git栈中读取最近一次保存的内容

4. git: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了