git使用-將本地專案新增到遠端程式碼庫
最近剛接觸Git,發現挺好用的,而且OSC還提供了免費的託管倉庫,打算把自己電腦上的程式碼同步到OSC上,結果總是出現各種失敗。網上搜索的解決方案大部分是先在[email protected]上建立專案,然後再clone到本地,而我是想把已經在本地建立好的倉庫直接push到[email protected]上。摸索半天終於解決,分享一下我的方式。
使用範圍:已經在本地通過 git init 命令建立了本地倉庫,然後想把本地倉庫push到[email protected]上。不對Git的安裝及使用進行詳細說明,Git詳細使用請參考http://git.oschina.net/progit/
第一步:建立本地倉庫用於push到遠處倉庫[email protected]上
1.隨意建立一個本地專案StudyGit,用於測試
# cd ./StudyGit // 進入專案的根目錄
2.為StudyGit專案建立本地倉庫,進入StudyGit專案根目錄,在根目錄下執行如下操作:
# git init //此時只是根據StudyGit專案目錄結構做了部分初始工作,StudyGit專案的檔案還沒被最終及提交到本地倉庫。
3.將StudyGit專案中的檔案提交到本地倉庫:
# git add . //將目錄下所有檔案加入暫存區 # git commit -a -m “初次提交” //此時本地倉庫中已經儲存有StudyGit專案的記錄了,接下來可以將本地倉庫中內容push到遠端倉庫了。
第二步:為當前使用者(我的是root使用者)建立ssh連線公鑰,並將公鑰新增在新增在個人的[email protected]賬號下,用於向遠端伺服器push時的驗證
參見其它文章,不再詳述。
第三步:為StudyGit專案新增遠端倉庫,並將本地倉庫中程式碼push到遠端倉庫:
1.在[email protected]上建立一個StudyGit的專案倉庫作為遠端倉庫使用,不一定要叫StudyGit其他名字應該也可以;
2.進入StudyGit的根目錄,為本專案新增遠端倉庫(注意一定要進入到StudyGit專案的目錄內,不一定要是根目錄,子目錄也可以):
# git remote add osc [email protected]:flan/StudyGit.git //1.”osc”是遠端倉庫地址的別名(不是遠端倉庫上專案的名字)可以隨便起,預設是origin
3.StudyGit.git 是剛剛在git.oschina.net上建立的遠端倉庫;
# git remote -v //可以檢視當前專案連線的是哪個遠端倉庫地址
4.將本地倉庫push到[email protected]上的遠端倉庫:
# git push -u osc master //”osc” 是剛剛建立的遠端倉庫名,“master”是本地倉庫的主幹分支(目前也只有這一個分支,沒有其他分支)
如裡有報錯誤:
To [email protected]:yangzhi/hello.git ! [rejected] master -> master (fetch first) error: failed to push some refs to '[email protected]:yangzhi/hello.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushin hint: to the same ref. You may want to first merge the remote changes (e.g. hint: 'git pull') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
可以輸入:
git push -f
5、克隆程式碼到本地:
git clone [email protected]:使用者名稱/專案名.git
=================================================================================================
其實在git上建立專案後,官方給出了很好的文件,幫助我們在本地從零或從已有專案與遠端建立關聯:
=================================================================================================