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

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

打开公钥文件,CtrlC,到OSChina里CtrlV,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,也成功了。哦耶!

鸣谢

OSChina中远程GIT仓库同步探索的更多相关文章

  1. 本地Git仓库同步到Bitbucket 远程Git仓库

    转载自:http://blog.csdn.net/lue2009/article/details/46553829 本地仓库内容可以和多个远程仓库同步,本地仓库出问题或者远程仓库其中一个有问题,那么剩 ...

  2. 本地Git仓库与Github远程仓库同步

    在本地创建了一个Git仓库后,还想在Github创建一个Git仓库,并使其远程同步.1.在电脑的用户主目录下有无.ssh目录,若有看是否有id_rsa和id_rsa.pub文件.若无,则创建SSH K ...

  3. git 快速使用(本地仓库同步到远程仓库)

    学git一段时间,可惜公司用的是svn,平时少用,又忘了,总结一下,免得下次又得重新学习.得多多用才是正道! 一.  将本地的提交到网上git仓库 1.在git创建仓库                ...

  4. 使用git将本地仓库同步到github远程仓库

    一.下载安装git客户端windows版本 二.建立本地仓库文件夹 三.在本地仓库里右键点击Git Bash Here 四.初始化本地仓库 [git init] 执行之后仓库中会创建隐藏的文件夹.gi ...

  5. 提交代码到远程GIT仓库,代码自动同步到远程服务器上。

    现在一般都会通过github,gitlab,gitee来管理我们的代码.我们希望只要我本地push了代码,远程服务器能自动拉取git仓库的代码,进行同步. 这就需要用到各仓库为我们提供的webhook ...

  6. Git进行fork后如何与原仓库同步

    在进行Git协同开发的时候,往往会去fork一个仓库到自己的Git中,过一段时间以后,原仓库可能会有各种提交以及修改,很可惜,Git本身并没有自动进行同步的机制,这个需要手动去执行.name如何进行自 ...

  7. 连接并同步windows下的git仓库

    1. 需求 电脑A和电脑B本来通过服务器同步工作目录.服务器时linux系统上有个裸仓库,不管在A上还是B上工作,工作完毕后使用git go与服务器仓库同步.A和B都是windows系统,在工作目录下 ...

  8. 使用网盘(Dropbox/Google Drive)同步Git仓库

    还在使用老掉牙的U盘搬运代码(文件)的方式,从一台机器上复制后,粘贴到另一台机器上?太Out了.使用Github 倒是一个非常不错的替代方法.但无论是基于什么理由都有可能不想把代码公开(毕竟Githu ...

  9. git 在不同服务器主机上同步 git 仓库

    git 在不同服务器主机上同步 git 仓库 参考链接:https://opentechguides.com/how-to/article/git/177/git-sync-repos.html 1. ...

随机推荐

  1. 06文件与IO

    这节主要学习系统调用stat.lstat.fstat. 格式如下: int fstat(int filedes, struct stat *buf); int stat(const char *pat ...

  2. Python基础教程【读书笔记】 - 2016/7/4

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第二波:第7章  更加抽象 [总览] 创建自己的对象,是Python的核心概念!Python被称为面向对象的语言.介绍如 ...

  3. 使用水晶报表更新后出现“值不能为 null。 参数名: inputString”

    简单记录一下: 如果更新完水晶报表相关页面可能在原来页面刷新会出现错误:"值不能为 null. 参数名: inputString",如图:

  4. S3C2440之MMU

    转自:http://blog.chinaunix.net/uid-23193900-id-3187782.html 1.MMU简介    MMU(Memory Management Unit),内存管 ...

  5. 127 Word Ladder

    Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...

  6. (三)java的数据类型

    java是一种强类型的语言,所谓强类型,意味着每个变量都要有确定的类型,每个表达式也要有明确的类型,包括传递的某些参数.java中从大的方面分有两大数据类型,分别是基本数据类型和引用数据类型,基本数据 ...

  7. 2. hdfs

    一.Hdfs的shell 所有hadoop的fs的shell均用uri路径作为参数 uri格式:schema://authority/path.hdfs的schema是hdfs.其中,schema和a ...

  8. aptana studio 3 自动换行(无需插件)

    菜单-Window-Preferences-Aptana Studio-Editors,勾选“Enable word wrap”,然后重启编辑器.

  9. spring2.5整合hibernate3.0整合Struts

    首先:这是spring framework+hibernate+struts集成,spring主要用于aop和ioc,hibernate主要是用于持久层,struts主要是用于mvc. 同时关于spr ...

  10. Java语法基础动手动脑实践

    输出结果为: 0.05+0.01=0.0600000000000000051.0-0.42=0.58000000000000014.015*100401.49999999999994123.3/100 ...