之前搞过这个Github,但是不能创建私有库,所以就试着用一下这个Bitbucket。
因为之前已经装过Github了,所以就没有装[1]中的msysgit,可以直接用Github的Gitshell
然后在Bitbucket中创建一个私有仓库,在自己本地的一个文件夹下,输入命令:
git init
为了不影响之前的Github,需要单独给这个库配置用户名和邮箱:
git config user.name "Your Name"
git config user.email "email@example.com"
之所以去掉--global,是因为这样的设定会保存在当前项目的.git/config,不会影响其他的项目。而如果用了--global选项,那么更改的配置文件就是位于你用户主目录下那个,以后所有的项目都会默认使用配置的用户信息[2]。
这个是用户目录下的config:
这个是我现在项目下的config,Bitbucket的邮箱和Github一样,但是用户名不一样
之后要配置这个SSH,不然每次用https推送,都需要输入密码。在用户目录下,.ssh文件下有之前的github_rsa.pub和github_rsa,我以为可以直接用,特别是
当我输入ssh-keygen -t rsa -C "user@gmail.com" (需要注意空格,ssh-keygen之间没有空格)之后产生Bad escape character 'ygen',就认为已经存在了,不需要再产生了,就直接拷贝到了Bitbucket的SSH管理里面。
然后配置这个git remote add origin git@bitbucket.com:user/project.git,git push origin master:
出现Permission denied错误,使用命令[4]:
ssh -v hg@bitbucket.org
结果如下:
这样的话,是因为id_rsa不存在,需要自己生成,之前的是github_rsa而不是id_rsa。不过还知道这个文件名在bitbucket里面改,特别坑爹的是这个ssh 和-keygen之间是不需要空格的,按照[5]一步一步来配置,就成功了:
用户目录下面创建.ssh文件夹:
-------------------------------------------------------
后记,用ssh生成了github_rsa,把它添加到bitbucket的账户里面,发现ssh -T git@bitbucket.org连接不通,用ssh -v hg@bitbucket.org产生下面的问题:
产生的错误说的是这个id_rsa文件不存在,因为我的文件名是github_rsa,所以当然就不存在了,根据参考[4]在.ssh文件下新添一个文件:
重新打开git客户端,ssh -T git@bitbucket.org就连接成功了.
之后根据[7],重写了config文件:
但是出现了一个奇葩问题,用ssh -Tv git@bitbucket.org,返回的是0,不过也是shell access is disabled:
用ssh -Tv git@github.com,返回的是1,也是Github does not provide shell acess,可能[6]说的是对的,出现这个情况就相当于联通了。
参考:
【1】Git教程 (安装Git)http://lvwzhen.github.io/Git-Tutorial/chapter-2/README.html
【2】1.5 起步 - 初次运行 Git 前的配置 http://git-scm.com/book/zh/%E8%B5%B7%E6%AD%A5-%E5%88%9D%E6%AC%A1%E8%BF%90%E8%A1%8C-Git-%E5%89%8D%E7%9A%84%E9%85%8D%E7%BD%AE
【3】Gitlab配置ssh连接 http://irusher.com/gitlab%E9%85%8D%E7%BD%AEssh%E8%BF%9E%E6%8E%A5/
【4】bitbucket Permission denied (publickey).问题 http://www.cnblogs.com/xiziyin/archive/2013/02/17/2914773.html
【5】Git教程(添加远程库) http://lvwzhen.github.io/Git-Tutorial/chapter-5/5-1.html
【6】git/github学习笔记 http://www.cnblogs.com/fnng/archive/2011/08/25/2153807.html
【7】利用 ssh 的用户配置文件 config 管理 ssh 会话 http://dhq.me/use-ssh-config-manage-ssh-session