最近尝试使用github托管代码,前面的流程还算比较顺利,没有遇到什么大问题,基本参考网上的流程就可以。

首先,直接在网页上注册帐号,创建代码仓库repository,填写相关信息。

然后,在linux客户端,用命令:git clone git@github.com:xxx/xxx.git 同步网页上创建repository到本地.

在本地添加文件,git add, git commit等,具体的可以参考网上或者git --help。

最后一步就是上传代码,git push, 如果没有生成本地公钥私钥对的,用ssh-keygen生成。

然后把公钥的内容,通过网页,粘贴复制,提交到github中。

在最后一步,要往github网站推送代码,出现问题了。

出现以下的错误。

试了几次,还是不行,就重新生成本地公钥密钥对,替换网站上的ssh key。

用:ssh -T git@github.com 测试也还不行。

从网上找的解决办法,大多都是官网帮助的翻译版。

https://help.github.com/articles/generating-ssh-keys

后来在网上找到这篇文章:

http://www.cnblogs.com/nani/archive/2012/11/02/2751660.html

发现有可能是本地密钥找不到的问题。

用ssh -vT git@github.com测试,果然是

原来是本地密钥对生成的路径不对,生成密钥用的是song用户,git push用的确实root用户。
本地密钥对存储在/home/song/.ssh/ 目录下,用root用户推送,在root/.ssh/ 目录下找的密钥对,当然就不对了。
 
切换到对应的用户,再次推送,就可以了。
[song@centos6364 FixSizeMemPool]$ git push -u FixSizeMemPool master
Enter passphrase for key '/home/song/.ssh/id_rsa': 
Counting objects: 8, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 3.16 KiB, done.
Total 7 (delta 0), reused 0 (delta 0)
To git@github.com:vscz/FixSizeMemPool.git
   223eabd..8b275e2  master -> master
Branch master set up to track remote branch master from FixSizeMemPool.
 
被这个小问题给困扰了好几个小时,终于都解决了,看来调试非常重要啊,能快速找到问题的所在。