遠(yuǎn)程倉庫的使用
為了能在任意 Git 項(xiàng)目上協(xié)作,你需要知道如何管理自己的遠(yuǎn)程倉庫。遠(yuǎn)程倉庫是指托管在因特網(wǎng)或其他網(wǎng)絡(luò)中的你的項(xiàng)目的版本庫。你可以有好幾個遠(yuǎn)程倉庫,通常有些倉庫對你只讀,有些則可以讀寫。與他人協(xié)作涉及管理遠(yuǎn)程倉庫以及根據(jù)需要推送或拉取數(shù)據(jù)。
管理遠(yuǎn)程倉庫包括了解如何添加遠(yuǎn)程倉庫、移除無效的遠(yuǎn)程倉庫、管理不同的遠(yuǎn)程分支并定義它們是否被跟蹤等等。
查看遠(yuǎn)程倉庫
如果想查看你已經(jīng)配置的遠(yuǎn)程倉庫服務(wù)器,可以運(yùn)行 git remote 命令。它會列出你指定的每一個遠(yuǎn)程服務(wù)器的簡寫。如果你已經(jīng)克隆了自己的倉庫,那么至少應(yīng)該能看到 origin ——這是 Git 給你克隆的倉庫服務(wù)器的默認(rèn)名字:
$ 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
你也可以指定選項(xiàng) -v,會顯示需要讀寫遠(yuǎn)程倉庫使用的 Git 保存的簡寫與其對應(yīng)的 URL。
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
如果你的遠(yuǎn)程倉庫不止一個,該命令會將它們?nèi)苛谐?。例如,與幾個協(xié)作者合作的,擁有多個遠(yuǎn)程倉庫的倉庫看起來像下面這樣:
$ cd grit
$ git remote -v
bakkdoor https://github.com/bakkdoor/grit (fetch)
bakkdoor https://github.com/bakkdoor/grit (push)
cho45 https://github.com/cho45/grit (fetch)
cho45 https://github.com/cho45/grit (push)
defunkt https://github.com/defunkt/grit (fetch)
defunkt https://github.com/defunkt/grit (push)
koke git://github.com/koke/grit.git (fetch)
koke git://github.com/koke/grit.git (push)
origin git@github.com:mojombo/grit.git (fetch)
origin git@github.com:mojombo/grit.git (push)
這表示我們能非常方便地拉取其它用戶的貢獻(xiàn)。我們還可以擁有向他們推送的權(quán)限。
注意這些遠(yuǎn)程倉庫使用了不同的協(xié)議。
添加遠(yuǎn)程倉庫
我們在之前的章節(jié)中已經(jīng)提到并展示了 git clone 命令是如何自行添加遠(yuǎn)程倉庫的, 不過這里將告訴你如何自己來添加它。運(yùn)行 git remote add shortname url 添加一個新的遠(yuǎn)程 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)
從遠(yuǎn)程倉庫中抓取與拉取
從遠(yuǎn)程倉庫中獲得數(shù)據(jù),可以執(zhí)行:
$ git fetch < remote >
注意 git fetch 命令只會將數(shù)據(jù)下載到你的本地倉庫——它并不會自動合并或修改你當(dāng)前的工作。當(dāng)準(zhǔn)備好時你必須手動將其合并入你的工作。
如果你的當(dāng)前分支設(shè)置了跟蹤遠(yuǎn)程分支(閱讀下一節(jié)和 Git 分支 了解更多息), 那么可以用 git pull 命令來自動抓取后合并該遠(yuǎn)程分支到當(dāng)前分支。這或許是個更加簡單舒服的工作流程。
默認(rèn)情況下,git clone 命令會自動設(shè)置本地 master 分支跟蹤克隆的遠(yuǎn)程倉庫的 master 分支(或其它名字的默認(rèn)分支)。運(yùn)行 git pull 通常會從最初克隆的服務(wù)器上抓取數(shù)據(jù)并自動嘗試合并到當(dāng)前所在的分支。
推送到遠(yuǎn)程倉庫
當(dāng)你想分享你的項(xiàng)目時,必須將其推送到上游。這個命令很簡單:git push remote branch。當(dāng)你想要將 master 分支推送到 origin 服務(wù)器時(克隆時通常會自動幫你設(shè)置好那兩個名字), 那么運(yùn)行這個命令就可以將你所做的備份到服務(wù)器:
$ git push origin master
只有當(dāng)你有所克隆服務(wù)器的寫入權(quán)限,并且之前沒有人推送過時,這條命令才能生效。當(dāng)你和其他人在同一時間克隆,他們先推送到上游然后你再推送到上游,你的推送就會毫無疑問地被拒絕。你必須先抓取他們的工作并將其合并進(jìn)你的工作后才能推送。
意思就是每次 git push 之前盡量先 git pull 一下,沒有 conflict 后再 git push。
查看某個遠(yuǎn)程倉庫
如果想要查看某一個遠(yuǎn)程倉庫的更多信息,可以使用 git remote show remote 命令。如果想以一個特定的縮寫名運(yùn)行這個命令,例如 origin,會得到像下面類似的信息:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
它同樣會列出遠(yuǎn)程倉庫的 URL 與跟蹤分支的信息。這些信息非常有用,它告訴你正處于 master 分支,并且如果運(yùn)行 git pull, 就會抓取所有的遠(yuǎn)程引用,然后將遠(yuǎn)程 master 分支合并到本地 master 分支。它也會列出拉取到的所有遠(yuǎn)程引用。
遠(yuǎn)程倉庫的重命名與移除
你可以運(yùn)行 git remote rename 來修改一個遠(yuǎn)程倉庫的簡寫名。例如,想要將 pb 重命名為 paul,可以用 git remote rename 這樣做:
$ git remote rename pb paul
$ git remote
origin
paul
這同樣也會修改你所有遠(yuǎn)程跟蹤的分支名字。
如果因?yàn)橐恍┰蛳胍瞥粋€遠(yuǎn)程倉庫——你已經(jīng)從服務(wù)器上搬走了或不再想使用某一個特定的鏡像了, 又或者某一個貢獻(xiàn)者不再貢獻(xiàn)了——可以使用 git remote remove 或 git remote rm :
$ git remote remove paul
$ git remote
origin
一旦你使用這種方式刪除了一個遠(yuǎn)程倉庫,那么所有和這個遠(yuǎn)程倉庫相關(guān)的遠(yuǎn)程跟蹤分支以及配置信息也會一起被刪除。
-
Git
+關(guān)注
關(guān)注
0文章
195瀏覽量
15687 -
遠(yuǎn)程倉庫
+關(guān)注
關(guān)注
0文章
3瀏覽量
2061
發(fā)布評論請先 登錄
相關(guān)推薦
評論