遠程倉庫的使用
為了能在任意 Git 項目上協作,你需要知道如何管理自己的遠程倉庫。遠程倉庫是指托管在因特網或其他網絡中的你的項目的版本庫。你可以有好幾個遠程倉庫,通常有些倉庫對你只讀,有些則可以讀寫。與他人協作涉及管理遠程倉庫以及根據需要推送或拉取數據。
管理遠程倉庫包括了解如何添加遠程倉庫、移除無效的遠程倉庫、管理不同的遠程分支并定義它們是否被跟蹤等等。
查看遠程倉庫
如果想查看你已經配置的遠程倉庫服務器,可以運行 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)
如果你的遠程倉庫不止一個,該命令會將它們全部列出。例如,與幾個協作者合作的,擁有多個遠程倉庫的倉庫看起來像下面這樣:
$ 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)
這表示我們能非常方便地拉取其它用戶的貢獻。我們還可以擁有向他們推送的權限。
注意這些遠程倉庫使用了不同的協議。
添加遠程倉庫
我們在之前的章節中已經提到并展示了 git clone 命令是如何自行添加遠程倉庫的, 不過這里將告訴你如何自己來添加它。運行 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)
從遠程倉庫中抓取與拉取
從遠程倉庫中獲得數據,可以執行:
$ git fetch < remote >
注意 git fetch 命令只會將數據下載到你的本地倉庫——它并不會自動合并或修改你當前的工作。當準備好時你必須手動將其合并入你的工作。
如果你的當前分支設置了跟蹤遠程分支(閱讀下一節和 Git 分支 了解更多息), 那么可以用 git pull 命令來自動抓取后合并該遠程分支到當前分支。這或許是個更加簡單舒服的工作流程。
默認情況下,git clone 命令會自動設置本地 master 分支跟蹤克隆的遠程倉庫的 master 分支(或其它名字的默認分支)。運行 git pull 通常會從最初克隆的服務器上抓取數據并自動嘗試合并到當前所在的分支。
推送到遠程倉庫
當你想分享你的項目時,必須將其推送到上游。這個命令很簡單:git push remote branch。當你想要將 master 分支推送到 origin 服務器時(克隆時通常會自動幫你設置好那兩個名字), 那么運行這個命令就可以將你所做的備份到服務器:
$ git push origin master
只有當你有所克隆服務器的寫入權限,并且之前沒有人推送過時,這條命令才能生效。當你和其他人在同一時間克隆,他們先推送到上游然后你再推送到上游,你的推送就會毫無疑問地被拒絕。你必須先抓取他們的工作并將其合并進你的工作后才能推送。
意思就是每次 git push 之前盡量先 git pull 一下,沒有 conflict 后再 git push。
查看某個遠程倉庫
如果想要查看某一個遠程倉庫的更多信息,可以使用 git remote show remote 命令。如果想以一個特定的縮寫名運行這個命令,例如 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)
它同樣會列出遠程倉庫的 URL 與跟蹤分支的信息。這些信息非常有用,它告訴你正處于 master 分支,并且如果運行 git pull, 就會抓取所有的遠程引用,然后將遠程 master 分支合并到本地 master 分支。它也會列出拉取到的所有遠程引用。
遠程倉庫的重命名與移除
你可以運行 git remote rename 來修改一個遠程倉庫的簡寫名。例如,想要將 pb 重命名為 paul,可以用 git remote rename 這樣做:
$ git remote rename pb paul
$ git remote
origin
paul
這同樣也會修改你所有遠程跟蹤的分支名字。
如果因為一些原因想要移除一個遠程倉庫——你已經從服務器上搬走了或不再想使用某一個特定的鏡像了, 又或者某一個貢獻者不再貢獻了——可以使用 git remote remove 或 git remote rm :
$ git remote remove paul
$ git remote
origin
一旦你使用這種方式刪除了一個遠程倉庫,那么所有和這個遠程倉庫相關的遠程跟蹤分支以及配置信息也會一起被刪除。
-
Git
+關注
關注
0文章
201瀏覽量
15784 -
遠程倉庫
+關注
關注
0文章
3瀏覽量
2096
發布評論請先 登錄
相關推薦
評論