菜鸟笔记
提升您的技术认知

Git使用常见问题解决方法汇总

  1. 在Ubuntu下使用$ git clone时出现server certificate verification failed. CAfile:/etc/ssl/certs/ca-certificates.crt CRLfile: none

解决方法:在执行$ git clone 之前,在终端输入:

export GIT_SSL_NO_VERIFY=1
  1. 在Windows上更新了git 2.6.3 64bit后,clone时出现,unable to negotiate with 10.0.0.8: no matching key exchange methodfound. Their offer: diffie-hellman-group1-sha1

解决方法:在执行git clone之前,在终端输入:

export GIT_SSH_COMMAND='ssh -o KexAlgorithms=+diffie-hellman-group1-sha1'

这种方法每次新开git窗口,都需要重新输入export GIT_SSH_COMMAND

网上有说是因为客户端和服务器端git教程版本不一致导致的,也有说如果知道服务器ip,可以在C:\Users\Spring.ssh下新建一个config文件,添加内容如下,但是好像不起作用:

Host 10.0.0.8
    KexAlgorithms +diffie-hellman-group1-sha1

还有一种方法就是,打开.bashrc文件,在终端输入:$ vim ~/.bashrc ,然后向.bashrc文件写入:保存并关闭。这样就不需要每次打开终端时都重新输入export GIT_SSH_COMMAND了。

export GIT_SSH_COMMAND='ssh -o KexAlgorithms=+diffie-hellman-group1-sha1'

还有一种方法就是在/etc/ssh/ssh_config文件的最后一行加入:

KexAlgorithms +diffie-hellman-group1-sha1
  1. 在Windows上,使用git bash here,编译vs2013工程时,中文显示乱码

解决方法:打开git bash here,鼠标点击右键--> Options… --> Text --> Locale 选择zh_CN,Characterset 选择GBK,点击Apply,OK即可

  1. 在Windows上写的代码移到Linux上提交时,会提示DOS line ending (CRLF) found, use Unix line ending (LF) instead

解决方法:

(1).下载dos2unix,执行

sudo apt-get install dos2unit

(2).对有问题的文件执行:

dos2unit ../xxx.cpp
  1. 有时将GitHub中的项目clone到Windows时,执行"git status"时,有时会提示有些文件被改动,其实这些文件并未做任何改动,执行"git checkout -- ."也不起作用,导致当再次pull项目时,提示"error: Your local changes to the following files would be overwritten by merge",无法正常执行pull操作。

解决方法,假如当前的分支是master,依次执行如下两个命令,当执行完如下两条命令后,再次执行"git pull"就会提示"Already up-to-date.":

git fetch origin master
git reset --hard FETCH_HEAD