本人小白一個,最近剛接觸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/ 。第一次寫博客有什麼錯誤歡迎指出!