Git 遠程倉庫
Git 並不像SVN 那樣有個中心服務器。
目前我們使用到的Git 命令都是在本地執行,如果你想通過Git 分享你的代碼或者與其他開發人員合作。 你就需要將數據放到一台其他開發人員能夠連接的服務器上。
本例使用了Github作為遠程倉庫,你可以先閱讀我們的Github簡明教程。
添加遠程庫
要添加一個新的遠程倉庫,可以指定一個簡單的名字,以便將來引用,命令格式如下:
git remote add [shortname] [url]
本例以Github為例作為遠程倉庫,如果你沒有Github可以在官網https://github.com/註冊。
由於你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以我們需要配置驗證信息:
使用以下命令生成SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"
後面的[email protected]改為你在github上註冊的郵箱,之後會要求確認路徑和輸入密碼,我們這使用默認的一路回車就行。 成功的話會在~/下生成.ssh文件夾,進去,打開id_rsa.pub,複製裡面的key。
回到github上,進入Account Settings(賬戶配置),左邊選擇SSH Keys,Add SSH Key,title隨便填,粘貼在你電腦上生成的key。
為了驗證是否成功,輸入以下命令:
$ ssh -T [email protected] Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.
以下命令說明我們已成功連上Github。
之後登錄後點擊" New repository " 如下圖所示:
之後在在Repository name 填入w3cschool.cc(遠程倉庫名) ,其他保持默認設置,點擊"Create repository"按鈕,就成功地創建了一個新的Git倉庫:
創建成功後,顯示如下信息:
以上信息告訴我們可以從這個倉庫克隆出新的倉庫,也可以把本地倉庫的內容推送到GitHub倉庫。
現在,我們根據GitHub的提示,在本地的倉庫下運行命令:
$ ls README w3cschool本教程测试.txt test.txt $ git remote add origin [email protected]:tianqixin/w3cschool.cc.git $ git push -u origin master Counting objects: 21, done. Delta compression using up to 4 threads. Compressing objects: 100% (15/15), done. Writing objects: 100% (21/21), 1.73 KiB | 0 bytes/s, done. Total 21 (delta 4), reused 0 (delta 0) To [email protected]:tianqixin/w3cschool.cc.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
以下命令請根據你在Github成功創建新倉庫的地方復制,而不是根據我提供的命令,因為我們的Github用戶名不一樣,倉庫名也不一樣。
接下來我們返回Github 創建的倉庫,就可以看到文件已上傳到Github上:
查看當前的遠程庫
要查看當前配置有哪些遠程倉庫,可以用命令:
git remote
$ git remote origin $ git remote -v origin [email protected]:tianqixin/w3cschool.cc.git (fetch) origin [email protected]:tianqixin/w3cschool.cc.git (push)
執行時加上-v 參數,你還可以看到每個別名的實際鏈接地址。
提取遠程倉庫
Git 有兩個命令用來提取遠程倉庫的更新。
1、從遠程倉庫下載新分支與數據:
git fetch
該命令執行完後需要執行git merge 遠程分支到你所在的分支。
2、從遠端倉庫提取數據並嘗試合併到當前分支:
git pull
該命令就是在執行git fetch 之後緊接著執行git merge 遠程分支到你所在的任意分支。
假設你配置好了一個遠程倉庫,並且你想要提取更新的數據,你可以首先執行git fetch [alias]告訴Git去獲取它有你沒有的數據,然後你可以執行git merge [alias]/[branch ]以將服務器上的任何更新(假設有人這時候推送到服務器了)合併到你的當前分支。
接下來我們在Github 上點擊"w3cschool本教程測試.txt" 並在線修改它。 之後我們在本地更新修改。
$ git fetch origin Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts. remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From github.com:tianqixin/w3cschool.cc 7d2081c..f5f3dd5 master -> origin/master
以上信息"7d2081c..f5f3dd5 master -> origin/master" 說明master 分支已被更新,我們可以使用以下命令將更新同步到本地:
$ git merge origin/master Updating 7d2081c..f5f3dd5 Fast-forward "w3cschool\350\217\234\351\270\237\346\225\231\347\250\213\346\265\213\350\257\225.txt" | 1 + 1 file changed, 1 insertion(+)
推送到遠程倉庫
推送你的新分支與數據到某個遠端倉庫命令:
git push [alias] [branch]
以上命令將你的[branch] 分支推送成為[alias] 遠程倉庫上的[branch] 分支,實例如下。
$ git merge origin/master Updating 7d2081c..f5f3dd5 Fast-forward "w3cschool\350\217\234\351\270\237\346\225\231\347\250\213\346\265\213\350\257\225.txt" | 1 + 1 file changed, 1 insertion(+) bogon:w3cschoolcc tianqixin$ vim w3cschool本教程测试.txt bogon:w3cschoolcc tianqixin$ git push origin master Everything up-to-date
刪除遠程倉庫
刪除遠程倉庫你可以使用命令:
git remote rm [别名]
$ git remote -v origin [email protected]:tianqixin/w3cschool.cc.git (fetch) origin [email protected]:tianqixin/w3cschool.cc.git (push) $ git remote add origin2 [email protected]:tianqixin/w3cschool.cc.git $ git remote -v origin [email protected]:tianqixin/w3cschool.cc.git (fetch) origin [email protected]:tianqixin/w3cschool.cc.git (push) origin2 [email protected]:tianqixin/w3cschool.cc.git (fetch) origin2 [email protected]:tianqixin/w3cschool.cc.git (push) $ git remote rm origin2 $ git remote -v origin [email protected]:tianqixin/w3cschool.cc.git (fetch) origin [email protected]:tianqixin/w3cschool.cc.git (push)