GIT平台在OSChina中的搭建帮了我们很大的忙,但如何将本地GIT仓库上传至OSChina的远程仓库,相信这是一个艰难的坎,今天我就在此总结我的成功经验,帮助大家,共同学习。由于条件有限,我全部的编写上传都是手机完成的,包括这篇文章。
GIT同步问题出现
我一直都在用AIDE编写一个安卓软件,从1.1版到2.2.2版一系列版本,都在本地仓库存储,突然有一天,我想找同学一起开发了,然后问题来了:怎样才能将代码共享完了还要有控制权,能够决定代码是否被采用?那就用github吧。由于github网站被墙,所以换用OSChina,同样的功能,而且是国内网站。
REMOTE仓库建立
在OSChina中建立一个开发组,再建立一个空项目,然后系统就为我分配一个SSH链接地址git@git.oschina.net:hele_two/Guass_Position
,这样REMOTE仓库就建立了,不过它是空的。我要做的是将本地仓库推送至REMOTE端。首先就是要使得本地与远端能够通过SSH认证连接,这时我就需要SSH2密钥对。
SSH2密钥生成
为啥叫SSH2呢,这大家可以度娘一下,据说是SSH商业化和OpenSSH的纷争。实际上是RSA密钥对。
如果我用Linux生成SSH2密钥对,那再简单不过了,只需用ssh-keygen就可以生成。但别忘了我只有一部安卓手机。针对以上问题,我有以下几点思路:移植Linux中的ssh-keygen到手机中运行
在手机上装了busybox也依然没有相关命令,于是我在网上下了Linux版ssh-keygen放到系统bin以及xbin文件夹内,然后命令行运行,提示SegmentFault,可知Android虽然基于Linux内核,但还是有区别的。扑街!利用Python开发环境
据说Python有高移植性,恰巧手机先前搭建了SL4A集成环境,安装了Python3.3解释器,也有QPython集成开发环境,于是上网搜了下,确实有可能成功。有个包叫paramiko,有相关实现。先试了QPython的pipe install paramiko
,结果人家服务器没有这种包;后又试了下载paramiko包,看了人家的README,结果还需要pycrypto包,于是又下载,但不知怎样安装,另外在shell中也无法找到python命令。总之问题很多,留下思考方向,去看看PATH变量,试试把python路径添加进去。有兴趣的可以试试,如果成功了记得分享一下哦。利用Java开发环境
手机中安装了AIDE,java环境跟电脑一样。上网搜索,找到符合条件的一种包——Jsch。不过据说这玩意很难找到参考手册,凭着锲而不舍的决心,我终于在CSDN上找到了,并花了2个豆下了下来。用CHM阅读器看下。。。。全是English?!还好我懂一些。。。。没有Demo,只能试。多的不说了,上代码:
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"); }
成功了!生成的格式很对。
打开公钥文件,Ctrl^C,到OSChina里Ctrl^V,Done!
CONFIG文件设置
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,也成功了。哦耶!
鸣谢
- http://ritto.blog.51cto.com/427838/741342 解决git pull时出现的几个问题
- http://git.oschina.net/progit/ Pro Git中文手册 第四章