1. 程式人生 > >Git 遠端倉庫(Github) Git 並不像 SVN 那樣有個中心伺服器。 目前我們使用到的 Git 命令都是在本地執行,如果你想通過 Git 分享你的程式碼或者與其他開發人員合作。 你就需要

Git 遠端倉庫(Github) Git 並不像 SVN 那樣有個中心伺服器。 目前我們使用到的 Git 命令都是在本地執行,如果你想通過 Git 分享你的程式碼或者與其他開發人員合作。 你就需要

Git 遠端倉庫(Github)

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 and GPG keys,然後點選 New SSH key 按鈕,title 設定標題,可以隨便填,貼上在你電腦上生成的 key。

新增成功後介面如下所示

為了驗證是否成功,輸入以下命令:

$ ssh -T [email protected].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 [email protected].com:tianqixin/runoob-git-test.git
$ git push -u origin master

以下命令請根據你在Github成功建立新倉庫的地方複製,而不是根據我提供的命令,因為我們的Github使用者名稱不一樣,倉庫名也不一樣。

接下來我們返回 Github 建立的倉庫,就可以看到檔案已上傳到 Github上:

檢視當前的遠端庫

要檢視當前配置有哪些遠端倉庫,可以用命令:

git remote

例項

$ git remote
origin
$ git remote -v
origin    [email protected].com:tianqixin/runoob-git-test.git (fetch)
origin    [email protected].com:tianqixin/runoob-git-test.git (push)

執行時加上 -v 引數,你還可以看到每個別名的實際連結地址。

提取遠端倉庫

Git 有兩個命令用來提取遠端倉庫的更新。

1、從遠端倉庫下載新分支與資料:

git fetch

該命令執行完後需要執行git merge 遠端分支到你所在的分支。

2、從遠端倉庫提取資料並嘗試合併到當前分支:

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:Total3(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/master
Updating0205aab..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    [email protected].com:tianqixin/runoob-git-test.git (fetch)
origin    [email protected].com:tianqixin/runoob-git-test.git (push)# 新增倉庫 origin2
$ git remote add origin2 [email protected].com:tianqixin/runoob-git-test.git

$ git remote -v
origin    [email protected].com:tianqixin/runoob-git-test.git (fetch)
origin    [email protected].com:tianqixin/runoob-git-test.git (push)
origin2    [email protected].com:tianqixin/runoob-git-test.git (fetch)
origin2    [email protected].com:tianqixin/runoob-git-test.git (push)# 刪除倉庫 origin2
$ git remote rm origin2
$ git remote -v
origin    [email protected].com:tianqixin/runoob-git-test.git (fetch)
origin    [email protected].com:tianqixin/runoob-git-test.git (push)