本人小白一个,最近刚接触Git,发现挺好用的,并且OSC还提供了免费的托管仓库,打算把本身电脑上的代码和在公司无聊时写的代码给同步到OSC上,结果老是出现各类失败。网上搜索的解决方案大部分是先在Git@OSC上建立项目,而后再clone到本地,而我是想把已经在本地建立好的仓库直接push到Git@OSC上。摸索半天终于解决,分享一下个人方式。 java
实用范围:已经在本地经过 git init 命令建立了本地仓库,而后想把本地仓库push到Git@OSC上。不对Git的安装及使用进行详细说明,Git详细使用请参考http://git.oschina.net/progit/(个人全部操做是在linux上进行的,windows上经过msysgit应该也能完成 ) linux
第一步:建立本地仓库用于push到远处仓库Git@OSC上,若是已经有本地仓库的能够忽略此步; git
1.随意建立一个本地项目StudyGit,用于测试: vim
# mkdir -p StudyGit/src/com/study/lynn
windows
# mkdir -p StudyGit/src/com/study/zeng 服务器
# cd ./StudyGit
ssh
# vim ReadMe.md
测试
# cd ./StudyGit/src/com/study/lynn
spa
# vim FirstActivity.java
.net
# cd ./StudyGit/src/com/study/zeng
# vim SecondActivity.java
以上操做建立了一个目录结构以下的项目:(我是在root帐号的家目录下建立了一个StudyGit项目)
2.为StudyGit项目建立本地仓库,进入StudyGit项目根目录,在根目录下执行以下操做:
# git init //此时只是根据StudyGit项目目录结构作了部分初始工做,StudyGit项目的文件还没被最终及提交到本地仓库。
3.将StudyGit项目中的文件提交到本地仓库:
# git add src/
# git add ReadMe.md //将src目录下的文件和Readme.md文件加入暂存区
# git commit -a -m "初次提交" //此时本地仓库中已经保存有StudyGit项目的记录了,接下来能够将本地仓库中内容push到远程仓库了。
第二步:为当前用户(个人是root用户)建立ssh链接公钥,并将公钥添加在添加在我的的Git@OSC帐号下,用于向远程服务器push时的验证
1.进入root的家目录(/root/.ssh)中会有一个 .ssh 的隐藏目录(安装Git后在每一个帐号的用户目录下都会有这个文件夹,若是是windors下的msysgit的话,通常在C:\Users\用户名\.ssh下),里面有两个文件 id_rsa 和 id_rsa.pub ,其中id_rsa.pub中的内容就是咱们要的公钥;若是没有这两个文件,或者以为不保险能够直接删了经过下面命令从新建立:
# ssh-keygen //执行该命令后,途中还须要按三次回车,后两次是输入密码,能够随便输两次要一致,为了方即可以不输入,直接回车;
2.进入id_rsa.pub文件,将其中所有内容复制添加在你我的Git@OSC帐号下的公钥中保存(保存时须要输入你的帐户密码);
3.验证下公钥是否添加成功:
#ssh -T git@git.oschina.net //中途会询问是否链接,输入yes回车,Welcome 表示已经链接成功
第三步:为StudyGit项目添加远程仓库,并将本地仓库中代码push到远程仓库:
1.在Git@OSC上建立一个StudyGit的项目仓库做为远程仓库使用,不必定要叫StudyGit其余名字应该也能够(没试过);
2.进入StudyGit的根目录,为本项目添加远程仓库(注意必定要进入到StudyGit项目的目录内,不必定要是根目录,子目录也能够):
# git remote add osc git@git.oschina.net:flan/StudyGit.git //1."osc"是远程仓库地址的别名(不是远程仓库上项目的名字)能够随便起,默认是origin;2. git@git.oschina.net:flan/StudyGit.git 注意冒号后面的“flan”,是osc为各个帐号分配的路径,个人远程仓库路径是http://git.oschina.net/flan/StudyGit.git,因此冒号后是flan,不一样帐号会不一样请注意更改;3.StudyGit.git 是刚刚在git.oschina.net上建立的远程仓库;
# git remote -v //能够查看添加的远程仓库
3.将本地仓库push到Git@OSC上的远程仓库:
# git push osc master //"osc" 是刚刚建立的远程仓库名,“master”是本地仓库的主干分支(目前也只有这一个分支,没有其余分支)
如今,已经完成将本地仓库push到Git@OSC上,若是对其中用到的git命令不明白的能够参看http://git.oschina.net/progit/ 。第一次写博客有什么错误欢迎指出!