1. 程式人生 > >Git 初次使用(4)

Git 初次使用(4)

如果想檢視你已經配置的遠端倉庫伺服器,可以執行 git remote 命令。 它會列出你指定的每一個遠端伺服器的簡寫。 如果你已經克隆了自己的倉庫,那麼至少應該能看到 origin - 這是 Git 給你克隆的倉庫伺服器的預設名字:

$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done. Checking connectivity... done. $ cd ticgit $ git remote origin

你也可以指定選項 -v,會顯示需要讀寫遠端倉庫使用的 Git 儲存的簡寫與其對應的 URL。

$ git remote -v
origin	https://github.com/schacon/ticgit (fetch)
origin	https://github.com/schacon/ticgit (push)

我在之前的章節中已經提到並展示瞭如何新增遠端倉庫的示例,不過這裡將告訴你如何明確地做到這一點。 執行 git remote add <shortname> <url>

 新增一個新的遠端 Git 倉庫,同時指定一個你可以輕鬆引用的簡寫:

$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin	https://github.com/schacon/ticgit (fetch)
origin	https://github.com/schacon/ticgit (push)
pb	https://github.com/paulboone/ticgit (fetch)
pb	https://github.com/paulboone/ticgit (push)

現在你可以在命令列中使用字串 pb

 來代替整個 URL。 例如,如果你想拉取 Paul 的倉庫中有但你沒有的資訊,可以執行 git fetch pb

$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
 * [new branch]      master     -> pb/master
 * [new branch]      ticgit     -> pb/ticgit

現在 Paul 的 master 分支可以在本地通過 pb/master 訪問到 - 你可以將它合併到自己的某個分支中,或者如果你想要檢視它的話,可以檢出一個指向該點的本地分支。 

就如剛才所見,從遠端倉庫中獲得資料,可以執行:

$ git fetch [remote-name]

這個命令會訪問遠端倉庫,從中拉取所有你還沒有的資料。 執行完成後,你將會擁有那個遠端倉庫中所有分支的引用,可以隨時合併或檢視。

如果你使用 clone 命令克隆了一個倉庫,命令會自動將其新增為遠端倉庫並預設以 “origin” 為簡寫。 所以,git fetch origin 會抓取克隆(或上一次抓取)後新推送的所有工作。 必須注意 git fetch 命令會將資料拉取到你的本地倉庫 - 它並不會自動合併或修改你當前的工作。 當準備好時你必須手動將其合併入你的工作。

如果你有一個分支設定為跟蹤一個遠端分支,可以使用 git pull 命令來自動的抓取然後合併遠端分支到當前分支。 這對你來說可能是一個更簡單或更舒服的工作流程;預設情況下,git clone 命令會自動設定本地 master 分支跟蹤克隆的遠端倉庫的 master 分支(或不管是什麼名字的預設分支)。 執行 git pull 通常會從最初克隆的伺服器上抓取資料並自動嘗試合併到當前所在的分支。

當你想分享你的專案時,必須將其推送到上游。 這個命令很簡單:git push [remote-name] [branch-name]。 當你想要將 master 分支推送到 origin 伺服器時(再次說明,克隆時通常會自動幫你設定好那兩個名字),那麼執行這個命令就可以將你所做的備份到伺服器:

$ git push origin master

只有當你有所克隆伺服器的寫入許可權,並且之前沒有人推送過時,這條命令才能生效。 當你和其他人在同一時間克隆,他們先推送到上游然後你再推送到上游,你的推送就會毫無疑問地被拒絕。 你必須先將他們的工作拉取下來並將其合併進你的工作後才能推送。