Git 并不像 SVN 那樣有個(gè)中心服務(wù)器。目前我們使用到的 Git 命令都是在本地執(zhí)行,,如果你想通過 Git 分享你的代碼或者與其他開發(fā)人員合作,。 你就需要將數(shù)據(jù)放到一臺(tái)其他開發(fā)人員能夠連接的服務(wù)器上。 本例使用了 Github 作為遠(yuǎn)程倉庫,,你可以先閱讀我們的 Github 簡(jiǎn)明教程,。 添加遠(yuǎn)程庫要添加一個(gè)新的遠(yuǎn)程倉庫,可以指定一個(gè)簡(jiǎn)單的名字,,以便將來引用,命令格式如下: git remote add [shortname] [url] 本例以Github為例作為遠(yuǎn)程倉庫,,如果你沒有Github可以在官網(wǎng)https://github.com/注冊(cè)。
由于你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,,所以我們需要配置驗(yàn)證信息: 使用以下命令生成SSH Key: $ ssh-keygen -t rsa -C "[email protected]" 后面的 [email protected] 改為你在 github 上注冊(cè)的郵箱,,之后會(huì)要求確認(rèn)路徑和輸入密碼,我們這使用默認(rèn)的一路回車就行,。成功的話會(huì)在~/下生成.ssh文件夾,,進(jìn)去,打開 id_rsa.pub,,復(fù)制里面的 key,。 回到 github 上,進(jìn)入 Account => Settings(賬戶配置),。 左邊選擇 SSH and GPG keys,然后點(diǎn)擊 New SSH key 按鈕,title 設(shè)置標(biāo)題,,可以隨便填,,粘貼在你電腦上生成的 key。 添加成功后界面如下所示
為了驗(yàn)證是否成功,,輸入以下命令: $ ssh -T [email protected] Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access. 以下命令說明我們已成功連上 Github,。 之后登錄后點(diǎn)擊" New repository " 如下圖所示: 之后在在Repository name 填入 runoob-git-test(遠(yuǎn)程倉庫名) ,其他保持默認(rèn)設(shè)置,,點(diǎn)擊"Create repository"按鈕,,就成功地創(chuàng)建了一個(gè)新的Git倉庫: 創(chuàng)建成功后,顯示如下信息: 以上信息告訴我們可以從這個(gè)倉庫克隆出新的倉庫,,也可以把本地倉庫的內(nèi)容推送到GitHub倉庫,。 現(xiàn)在,我們根據(jù) GitHub 的提示,在本地的倉庫下運(yùn)行命令: $ mkdir runoob-git-test # 創(chuàng)建測(cè)試目錄 $ cd runoob-git-test/ # 進(jìn)入測(cè)試目錄 $ echo "# 菜鳥教程 Git 測(cè)試" >> README.md # 創(chuàng)建 README.md 文件并寫入內(nèi)容 $ 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 [email protected]:tianqixin/runoob-git-test.git $ git push -u origin master 以下命令請(qǐng)根據(jù)你在Github成功創(chuàng)建新倉庫的地方復(fù)制,,而不是根據(jù)我提供的命令,,因?yàn)槲覀兊腉ithub用戶名不一樣,倉庫名也不一樣,。 接下來我們返回 Github 創(chuàng)建的倉庫,,就可以看到文件已上傳到 Github上: 查看當(dāng)前的遠(yuǎn)程庫要查看當(dāng)前配置有哪些遠(yuǎn)程倉庫,可以用命令: git remote 實(shí)例$ git remote origin $ git remote -v origin [email protected]:tianqixin/runoob-git-test.git (fetch) origin [email protected]:tianqixin/runoob-git-test.git (push) 執(zhí)行時(shí)加上 -v 參數(shù),,你還可以看到每個(gè)別名的實(shí)際鏈接地址,。 提取遠(yuǎn)程倉庫Git 有兩個(gè)命令用來提取遠(yuǎn)程倉庫的更新。 1,、從遠(yuǎn)程倉庫下載新分支與數(shù)據(jù): git fetch 該命令執(zhí)行完后需要執(zhí)行g(shù)it merge 遠(yuǎn)程分支到你所在的分支,。 2、從遠(yuǎn)端倉庫提取數(shù)據(jù)并嘗試合并到當(dāng)前分支: git pull 該命令就是在執(zhí)行 git fetch 之后緊接著執(zhí)行 git merge 遠(yuǎn)程分支到你所在的任意分支,。 假設(shè)你配置好了一個(gè)遠(yuǎn)程倉庫,,并且你想要提取更新的數(shù)據(jù),你可以首先執(zhí)行 git fetch [alias] 告訴 Git 去獲取它有你沒有的數(shù)據(jù),,然后你可以執(zhí)行 git merge [alias]/[branch] 以將服務(wù)器上的任何更新(假設(shè)有人這時(shí)候推送到服務(wù)器了)合并到你的當(dāng)前分支,。 接下來我們?cè)?Github 上點(diǎn)擊" README.md" 并在線修改它: 然后我們?cè)诒镜馗滦薷摹?/p> $ 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 文件內(nèi)容: $ cat README.md # 菜鳥教程 Git 測(cè)試 ## 第一次修改內(nèi)容 推送到遠(yuǎn)程倉庫推送你的新分支與數(shù)據(jù)到某個(gè)遠(yuǎn)端倉庫命令: git push [alias] [branch] 以上命令將你的 [branch] 分支推送成為 [alias] 遠(yuǎn)程倉庫上的 [branch] 分支,,實(shí)例如下,。 $ touch runoob-test.txt # 添加文件 $ git add runoob-test.txt $ git commit -m "添加到遠(yuǎn)程" master 69e702d] 添加到遠(yuǎn)程 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 runoob-test.txt $ git push origin master # 推送到 Github 重新回到我們的 Github 倉庫,可以看到文件以及提交上來了: 刪除遠(yuǎn)程倉庫刪除遠(yuǎn)程倉庫你可以使用命令: git remote rm [別名] 實(shí)例$ git remote -v origin [email protected]:tianqixin/runoob-git-test.git (fetch) origin [email protected]:tianqixin/runoob-git-test.git (push) # 添加倉庫 origin2 $ git remote add origin2 [email protected]:tianqixin/runoob-git-test.git $ git remote -v origin [email protected]:tianqixin/runoob-git-test.git (fetch) origin [email protected]:tianqixin/runoob-git-test.git (push) origin2 [email protected]:tianqixin/runoob-git-test.git (fetch) origin2 [email protected]:tianqixin/runoob-git-test.git (push) # 刪除倉庫 origin2 $ git remote rm origin2 $ git remote -v origin [email protected]:tianqixin/runoob-git-test.git (fetch) origin [email protected]:tianqixin/runoob-git-test.git (push) |
|