GIT平台在OSChina中的搭建帮了咱们很大的忙,但如何将本地GIT仓库上传至OSChina的远程仓库,相信这是一个艰难的坎,今天我就在此总结个人成功经验,帮助你们,共同窗习。因为条件有限,我所有的编写上传都是手机完成的,包括这篇文章。java
我一直都在用AIDE编写一个安卓软件,从1.1版到2.2.2版一系列版本,都在本地仓库存储,忽然有一天,我想找同窗一块儿开发了,而后问题来了:怎样才能将代码共享完了还要有控制权,可以决定代码是否被采用?那就用github吧。因为github网站被墙,因此换用OSChina,一样的功能,并且是国内网站。python
在OSChina中创建一个开发组,再创建一个空项目,而后系统就为我分配一个SSH连接地址git@git.oschina.net:hele_two/Guass_Position
,这样REMOTE仓库就创建了,不过它是空的。我要作的是将本地仓库推送至REMOTE端。首先就是要使得本地与远端可以经过SSH认证链接,这时我就须要SSH2密钥对。linux
为啥叫SSH2呢,这你们能够度娘一下,听说是SSH商业化和OpenSSH的纷争。其实是RSA密钥对。
若是我用Linux生成SSH2密钥对,那再简单不过了,只需用ssh-keygen就能够生成。但别忘了我只有一部安卓手机。针对以上问题,我有如下几点思路:git
pipe install paramiko
,结果人家服务器没有这种包;后又试了下载paramiko包,看了人家的README,结果还须要pycrypto包,因而又下载,但不知怎样安装,另外在shell中也没法找到python命令。总之问题不少,留下思考方向,去看看PATH变量,试试把python路径添加进去。有兴趣的能够试试,若是成功了记得分享一下哦。JSch jsch = new JSch(); try { KeyPair kp = new KeyPairRSA(jsch).genKeyPair(jsch,KeyPair.RSA); kp.writePrivateKey("/mnt/sdcard/.ssh/id_rsa"); kp.writePublicKey("/mnt/sdcard/.ssh/id_rsa.pub", "hele-two@163.com"); } catch (FileNotFoundException e) { System.out.println("haha"); } catch (Exception e) { System.out.println("error"); }
成功了!生成的格式很对。github
打开公钥文件,Ctrl^C,到OSChina里Ctrl^V,Done!shell
Git问题再出现,在push过程当中出现了rejected_nonfastforward错误,上网查了下,是由于remote端和local端分支不一样步的缘由。须要先pull再push。而后pull出现了branch.master.merge不知道地址的问题,这牵扯到默认地址和分支的问题。搜一下,remote端只有master分支,再在git的config文件添加以下代码:服务器
[branch "master"] remote = master merge = refs/heads/master [remote "master"] url = git@git.oschina.net:hele_two/Guass_Position fetch = refs/heads/master [remote "origin"] url = git@git.oschina.net:hele_two/Guass_Position
再pull,能够了,而后push,也成功了。哦耶!ssh