Git 添加、查看、提取、推送、刪除遠程倉庫(GitHub)教程,gitgithub
添加遠程庫
要添加一個新的遠程倉庫,可以指定一個簡單的名字,以便將來引用,命令格式如下:
git remote add [shortname] [url]
本例以Github為例作為遠程倉庫,如果你沒有Github可以在官網註冊。
由於你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以我們需要配置驗證資訊:
使用以下命令生產SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
後面的 your_email@youremail.com 改為你在 github 上註冊的郵箱,之後會要求確認路徑和輸入密碼,我們這使用預設的一路斷行符號就行。成功的話會在~/下產生.ssh檔案夾,進去,開啟 id_rsa.pub,複製裡面的 key。
回到github上,進入Account=>Settings(賬戶配置)。
左邊選擇 SSH and GPG keys,然後點擊 New SSH key 按鈕,title 設定標題,可以隨便填,黏貼在你電腦上產生的key。
添加成功後介面如下所示:
為了驗證是否成功,輸入以下命令:
$ ssh -T git@github.comHi 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 remoteorigin$ git remote -vorigingit@github.com:tianqixin/runoob-git-test.git (fetch)origingit@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 originremote: Counting objects: 3, done.remote: Compressing objects: 100% (2/2), done.remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0Unpacking 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/masterUpdating 0205aab..febd8edFast-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 -vorigingit@github.com:tianqixin/runoob-git-test.git (fetch)origingit@github.com:tianqixin/runoob-git-test.git (push)# 添加倉庫 origin2$ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git$ git remote -vorigingit@github.com:tianqixin/runoob-git-test.git (fetch)origingit@github.com:tianqixin/runoob-git-test.git (push)origin2git@github.com:tianqixin/runoob-git-test.git (fetch)origin2git@github.com:tianqixin/runoob-git-test.git (push)# 刪除倉庫 origin2$ git remote rm origin2$ git remote -vorigingit@github.com:tianqixin/runoob-git-test.git (fetch)origingit@github.com:tianqixin/runoob-git-test.git (push)