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