遠程倉庫的使用
查看遠程倉庫
如果想查看你已經配置的遠程倉庫服務器,可以運行 git remote
命令。 它會列出你指定的每一個遠程服務器的簡寫。
如果你已經克隆了自己的倉庫,那麼至少應該能看到 origin - 這是 Git 給你克隆的倉庫服務器的默認名字:
$
git clone https://github.com/schacon/ticgitCloning 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 remoteorigin
你也可以指定選項 -v
,會顯示需要讀寫遠程倉庫使用的 Git 保存的簡寫與其對應的 URL。
$
git remote -vorigin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
添加遠程倉庫
我在之前的章節中已經提到並展示瞭如何添加遠程倉庫的示例,不過這裏將告訴你如何明確地做到這一點。 運行 git
remote add <shortname> <url>
添加一個新的遠程 Git 倉庫,同時指定一個你可以輕鬆引用的簡寫:
$
git remoteorigin
$
git remote add pb https://github.com/paulboone/ticgit$
git remote -vorigin 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 pbremote: 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
只有當你有所克隆服務器的寫入權限,並且之前沒有人推送過時,這條命令才能生效。 當你和其他人在同一時間克隆,他們先推送到上游然後你再推送到上游,你的推送就會毫無疑問地被拒絕。 你必須先將他們的工作拉取下來並將其合併進你的工作後才能推送。