Git 並不像 SVN 那樣有個中心服務器。html
目前咱們使用到的 Git 命令都是在本地執行,若是你想經過 Git 分享你的代碼或者與其餘開發人員合做。 你就須要將數據放到一臺其餘開發人員可以鏈接的服務器上。git
本例使用了 Github 做爲遠程倉庫,你能夠先閱讀咱們的 Github 簡明教程。github
要添加一個新的遠程倉庫,能夠指定一個簡單的名字,以便未來引用,命令格式以下:shell
git remote add [shortname] [url]
本例以Github爲例做爲遠程倉庫,若是你沒有Github能夠在官網https://github.com/註冊。服務器
因爲你的本地Git倉庫和GitHub倉庫之間的傳輸是經過SSH加密的,因此咱們須要配置驗證信息:ssh
使用如下命令生成SSH Key:ide
$ ssh-keygen -t rsa -C "youremail@example.com"
後面的 your_email@youremail.com 改成你在 github 上註冊的郵箱,以後會要求確認路徑和輸入密碼,咱們這使用默認的一路回車就行。成功的話會在~/下生成.ssh文件夾,進去,打開 id_rsa.pub,複製裏面的 key。測試
回到 github 上,進入 Account => Settings(帳戶配置)。fetch
左邊選擇 SSH and GPG keys,而後點擊 New SSH key 按鈕,title 設置標題,能夠隨便填,粘貼在你電腦上生成的 key。ui
添加成功後界面以下所示
爲了驗證是否成功,輸入如下命令:
$ ssh -T git@github.com Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.
如下命令說明咱們已成功連上 Github。
以後登陸後點擊" New repository " 以下圖所示:
以後在在Repository name 填入 runoob-git-test(遠程倉庫名) ,其餘保持默認設置,點擊"Create repository"按鈕,就成功地建立了一個新的Git倉庫:
建立成功後,顯示以下信息:
以上信息告訴咱們能夠從這個倉庫克隆出新的倉庫,也能夠把本地倉庫的內容推送到GitHub倉庫。
如今,咱們根據 GitHub 的提示,在本地的倉庫下運行命令:
$ mkdir runoob-git-test # 建立測試目錄 $ cd runoob-git-test/ # 進入測試目錄 $ echo "# 菜鳥教程 Git 測試" >> README.md # 建立 README.md 文件並寫入內容 $ ls # 查看目錄下的文件 README $ git init # 初始化 $ git add README.md # 添加文件 $ git commit -m "添加 README.md 文件" # 提交併備註信息 [master (root-commit) 0205aab] 添加 README.md 文件 1 file changed, 1 insertion(+) create mode 100644 README.md # 提交到 Github $ git remote add origin git@github.com:tianqixin/runoob-git-test.git $ git push -u origin master
如下命令請根據你在Github成功建立新倉庫的地方複製,而不是根據我提供的命令,由於咱們的Github用戶名不同,倉庫名也不同。
接下來咱們返回 Github 建立的倉庫,就能夠看到文件已上傳到 Github上:
要查看當前配置有哪些遠程倉庫,能夠用命令:
git remote
$ git remote origin $ git remote -v origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push)
執行時加上 -v 參數,你還能夠看到每一個別名的實際連接地址。
Git 有兩個命令用來提取遠程倉庫的更新。
一、從遠程倉庫下載新分支與數據:
git fetch
該命令執行完後須要執行git merge 遠程分支到你所在的分支。
二、從遠端倉庫提取數據並嘗試合併到當前分支:
git merge
該命令就是在執行 git fetch 以後緊接着執行 git merge 遠程分支到你所在的任意分支。
假設你配置好了一個遠程倉庫,而且你想要提取更新的數據,你能夠首先執行 git fetch [alias] 告訴 Git 去獲取它有你沒有的數據,而後你能夠執行 git merge [alias]/[branch] 以將服務器上的任何更新(假設有人這時候推送到服務器了)合併到你的當前分支。
接下來咱們在 Github 上點擊" README.md" 並在線修改它:
而後咱們在本地更新修改。
$ git fetch origin remote: Counting objects: 3, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From github.com:tianqixin/runoob-git-test 0205aab..febd8ed master -> origin/master
以上信息"0205aab..febd8ed master -> origin/master" 說明 master 分支已被更新,咱們可使用如下命令將更新同步到本地:
$ git merge origin/master Updating 0205aab..febd8ed Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)
查看 README.md 文件內容:
$ cat README.md
# 菜鳥教程 Git 測試
## 第一次修改內容
推送你的新分支與數據到某個遠端倉庫命令:
git push [alias] [branch]
以上命令將你的 [branch] 分支推送成爲 [alias] 遠程倉庫上的 [branch] 分支,實例以下。
$ touch runoob-test.txt # 添加文件 $ git add runoob-test.txt $ git commit -m "添加到遠程" master 69e702d] 添加到遠程 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 runoob-test.txt $ git push origin master # 推送到 Github
從新回到咱們的 Github 倉庫,能夠看到文件以及提交上來了:
刪除遠程倉庫你可使用命令:
git remote rm [別名]
$ git remote -v origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push) # 添加倉庫 origin2 $ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git $ git remote -v origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push) origin2 git@github.com:tianqixin/runoob-git-test.git (fetch) origin2 git@github.com:tianqixin/runoob-git-test.git (push) # 刪除倉庫 origin2 $ git remote rm origin2 $ git remote -v origin git@github.com:tianqixin/runoob-git-test.git (fetch) origin git@github.com:tianqixin/runoob-git-test.git (push)
對於開發者而言 GitHub 已經不陌生了,在平時的開發中將代碼託管到 GitHub 上十分方便。可是、國內用戶一般會遇到一個問題就是: GitHub 的訪問速度太慢。在阿里雲和騰訊雲的主機上 clone 代碼時,若是主機的帶寬不夠大,clone 代碼簡直就是龜速。經常還會出現:丟包、失去鏈接等狀況。對於這種狀況,若是你想體驗飛速的 Git 服務,不妨試着用一下 騰訊雲開發者平臺。相對於GitHub,CODING 除了提供免費的 Git 倉庫以外,還給咱們提供了免費的私有倉庫(免費的普通會員提供 10 個私有項目、512M Git 倉庫容量)。此外、CODING 還爲咱們免費提供了,項目管理、任務管理、團隊管理、文件管理等功能,十分強大。
下面,我是試着來建立一個 CODING 項目,而且將 GitHub 上的代碼遷移到 CODING。一般,分爲三步:
登陸 騰訊雲開發者平臺 註冊帳號,而後在項目管理頁面中建立項目,這一步不作贅述,按你的須要填寫項目名稱與描述,選擇 License 類型便可,關於 License 的選擇能夠參考這篇文章:如何選擇開源許可證?。項目建立完成中,在右側菜單欄中的代碼選項卡能夠對代碼進行相關的管理與操做
登陸 GitHub 選擇你想要導入的倉庫並複製倉庫地址,在本地執行命令,將 GitHub 倉庫代碼拉下來:
sudo git clone
首先咱們執行命令:git remote -v
能夠看到,當前的 git 已經關聯了一個遠程倉庫。
所以,接下來咱們執行如下命令,來關聯 CODING 遠程倉庫(後面的倉庫地址須要替換爲你的 CODING 項目的地址!) 第一條命令的做用是刪除現有的倉庫關聯,後面兩條命令則是將倉庫關聯到 CODING 的地址,而且將代碼 Push 到 master 分支
sudo git remote rm origin sudo git remote add origin https://git.coding.net/xxx/xxx.git sudo git push -u origin master
以後,咱們再次進入 CODING 項目中代碼管理的頁面,即可以看到咱們剛纔 Push 上去的代碼了。至此、GitHub 上的項目已經完整遷移到了 CODING 平臺!
代碼遷移到 CODING 以後,咱們發現,每次 Push/Pull 代碼的時候都會提示咱們輸入用戶名和密碼。這是由於,咱們的項目尚未添加 SSH Key,只能經過用戶名/密碼驗證。 而 CODING 是爲咱們提供了公鑰驗證的方式的,進入項目管理,在左側選項卡中點擊"公鑰部署"按鈕,而後點擊右側的"新建公鑰部署"
咱們將本地的公鑰內容粘貼到對應位置,而且給公鑰命名一下(查看/生成本機公鑰,能夠參考這篇博文:查看本機 ssh 公鑰,生成公鑰)。勾選"授予推送權限"則能夠授予這臺機器Push代碼的權限。
保存好設置後,咱們再次嘗試。此時,Push/Pull 代碼不在須要驗證用戶名密碼。至此,咱們的代碼便徹底託管在了 CODING 平臺上,享受他的便捷與飛速吧!
若有疑問請查閱幫助文檔