OSChina中远程GIT仓库同步探索

GIT平台在OSChina中的搭建帮了咱们很大的忙,但如何将本地GIT仓库上传至OSChina的远程仓库,相信这是一个艰难的坎,今天我就在此总结个人成功经验,帮助你们,共同窗习。因为条件有限,我所有的编写上传都是手机完成的,包括这篇文章java

GIT同步问题出现

我一直都在用AIDE编写一个安卓软件,从1.1版到2.2.2版一系列版本,都在本地仓库存储,忽然有一天,我想找同窗一块儿开发了,而后问题来了:怎样才能将代码共享完了还要有控制权,可以决定代码是否被采用?那就用github吧。因为github网站被墙,因此换用OSChina,一样的功能,并且是国内网站。python

REMOTE仓库创建

在OSChina中创建一个开发组,再创建一个空项目,而后系统就为我分配一个SSH连接地址git@git.oschina.net:hele_two/Guass_Position,这样REMOTE仓库就创建了,不过它是空的。我要作的是将本地仓库推送至REMOTE端。首先就是要使得本地与远端可以经过SSH认证链接,这时我就须要SSH2密钥对。linux

SSH2密钥生成

为啥叫SSH2呢,这你们能够度娘一下,听说是SSH商业化和OpenSSH的纷争。其实是RSA密钥对。
若是我用Linux生成SSH2密钥对,那再简单不过了,只需用ssh-keygen就能够生成。但别忘了我只有一部安卓手机。针对以上问题,我有如下几点思路:git

  • 移植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");
        }

成功了!生成的格式很对。github

打开公钥文件,Ctrl^C,到OSChina里Ctrl^V,Done!shell

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,也成功了。哦耶!ssh

鸣谢

  • http://ritto.blog.51cto.com/427838/741342 解决git pull时出现的几个问题
  • http://git.oschina.net/progit/ Pro Git中文手册 第四章
相关文章
相关标签/搜索