<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://jiva.dila.edu.tw/index.php?action=history&amp;feed=atom&amp;title=Pro_Git_2.5_%E9%81%A0%E7%AB%AF%E5%80%89%E5%BA%AB%E7%9A%84%E4%BD%BF%E7%94%A8</id>
	<title>Pro Git 2.5 遠端倉庫的使用 - 修訂歷史</title>
	<link rel="self" type="application/atom+xml" href="https://jiva.dila.edu.tw/index.php?action=history&amp;feed=atom&amp;title=Pro_Git_2.5_%E9%81%A0%E7%AB%AF%E5%80%89%E5%BA%AB%E7%9A%84%E4%BD%BF%E7%94%A8"/>
	<link rel="alternate" type="text/html" href="https://jiva.dila.edu.tw/index.php?title=Pro_Git_2.5_%E9%81%A0%E7%AB%AF%E5%80%89%E5%BA%AB%E7%9A%84%E4%BD%BF%E7%94%A8&amp;action=history"/>
	<updated>2026-05-05T21:17:53Z</updated>
	<subtitle>本 Wiki 上此頁面的修訂歷史</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://jiva.dila.edu.tw/index.php?title=Pro_Git_2.5_%E9%81%A0%E7%AB%AF%E5%80%89%E5%BA%AB%E7%9A%84%E4%BD%BF%E7%94%A8&amp;diff=527&amp;oldid=prev</id>
		<title>imported&gt;Ray：​新頁面: 要參與任何一個 Git 專案的協作，必須要瞭解該如何管理遠端倉庫。遠端倉庫是指託管在網路上的專案倉庫，可能會有好多個，其中有些你只...</title>
		<link rel="alternate" type="text/html" href="https://jiva.dila.edu.tw/index.php?title=Pro_Git_2.5_%E9%81%A0%E7%AB%AF%E5%80%89%E5%BA%AB%E7%9A%84%E4%BD%BF%E7%94%A8&amp;diff=527&amp;oldid=prev"/>
		<updated>2011-05-24T08:09:12Z</updated>

		<summary type="html">&lt;p&gt;新頁面: 要參與任何一個 Git 專案的協作，必須要瞭解該如何管理遠端倉庫。遠端倉庫是指託管在網路上的專案倉庫，可能會有好多個，其中有些你只...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新頁面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;要參與任何一個 Git 專案的協作，必須要瞭解該如何管理遠端倉庫。遠端倉庫是指託管在網路上的專案倉庫，可能會有好多個，其中有些你只能讀，另外有些可以寫。同他人協作開發某個專案時，需要管理這些遠端倉庫，以便推送(push)或拉取(pull)資料，分享各自的工作進展。管理遠端倉庫的工作，包括添加遠端庫，移除廢棄的遠端庫，管理各式遠端庫分支(branch)，定義是否跟蹤這些分支，等等。本節我們將詳細討論遠端庫的管理和使用。&lt;br /&gt;
&lt;br /&gt;
=查看當前的遠端倉庫=&lt;br /&gt;
&lt;br /&gt;
要查看當前配置有哪些遠端倉庫，可以用 git remote 命令，它會列出每個遠端庫的簡短名字。在克隆完某個專案後，至少可以看到一個名為 origin 的遠端庫，Git 預設使用這個名字來標識你所克隆的原始倉庫：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git clone git://github.com/schacon/ticgit.git&lt;br /&gt;
Initialized empty Git repository in /private/tmp/ticgit/.git/&lt;br /&gt;
remote: Counting objects: 595, done.&lt;br /&gt;
remote: Compressing objects: 100% (269/269), done.&lt;br /&gt;
remote: Total 595 (delta 255), reused 589 (delta 253)&lt;br /&gt;
Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done.&lt;br /&gt;
Resolving deltas: 100% (255/255), done.&lt;br /&gt;
$ cd ticgit&lt;br /&gt;
$ git remote &lt;br /&gt;
origin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
也可以加上 -v 選項（譯注：此為 –verbose 的簡寫，取首字母），顯示對應的克隆位址：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git remote -v&lt;br /&gt;
origin	git://github.com/schacon/ticgit.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果有多個遠端倉庫，此命令將全部列出。比如在我的 Grit 項目中，可以看到：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ cd grit&lt;br /&gt;
$ git remote -v&lt;br /&gt;
bakkdoor  git://github.com/bakkdoor/grit.git&lt;br /&gt;
cho45     git://github.com/cho45/grit.git&lt;br /&gt;
defunkt   git://github.com/defunkt/grit.git&lt;br /&gt;
koke      git://github.com/koke/grit.git&lt;br /&gt;
origin    git@github.com:mojombo/grit.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
這樣一來，我就可以非常輕鬆地從這些用戶的倉庫中，拉取他們的提交到本地。請注意，上面列出的位址只有 origin 用的是 SSH URL 連結，所以也只有這個倉庫我能推送資料上去（我們會在第四章解釋原因）。&lt;br /&gt;
&lt;br /&gt;
=添加遠程倉庫=&lt;br /&gt;
&lt;br /&gt;
要添加一個新的遠端倉庫，可以指定一個簡單的名字，以便將來引用，執行 git remote add [shortname] [url]：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git remote&lt;br /&gt;
origin&lt;br /&gt;
$ git remote add pb git://github.com/paulboone/ticgit.git&lt;br /&gt;
$ git remote -v&lt;br /&gt;
origin	git://github.com/schacon/ticgit.git&lt;br /&gt;
pb	git://github.com/paulboone/ticgit.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
現在可以用字串 pb 指代對應的倉庫位址了。比如說，要抓取所有 Paul 有的，但本地倉庫沒有的資訊，可以執行 git fetch pb：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git fetch pb&lt;br /&gt;
remote: Counting objects: 58, done.&lt;br /&gt;
remote: Compressing objects: 100% (41/41), done.&lt;br /&gt;
remote: Total 44 (delta 24), reused 1 (delta 0)&lt;br /&gt;
Unpacking objects: 100% (44/44), done.&lt;br /&gt;
From git://github.com/paulboone/ticgit&lt;br /&gt;
 * [new branch]      master     -&amp;gt; pb/master&lt;br /&gt;
 * [new branch]      ticgit     -&amp;gt; pb/ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
現在，Paul 的主幹分支（master）已經完全可以在本地訪問了，對應的名字是 pb/master，你可以將它合併到自己的某個分支，或者切換到這個分支，看看有些什麼有趣的更新。&lt;br /&gt;
&lt;br /&gt;
=從遠端倉庫抓取資料=&lt;br /&gt;
&lt;br /&gt;
正如之前所看到的，可以用下面的命令從遠端倉庫抓取資料到本地：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git fetch [remote-name]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
此命令會到遠端倉庫中拉取所有你本地倉庫中還沒有的資料。執行完成後，你就可以在本地訪問該遠端倉庫中的所有分支，將其中某個分支合併到本地，或者只是取出某個分支，一探究竟。（我們會在第三章詳細討論關於分支的概念和操作。）&lt;br /&gt;
&lt;br /&gt;
如果是克隆(clone)了一個倉庫，此命令會自動將遠端倉庫歸於 origin 名下。所以，git fetch origin 會抓取從你上次克隆以來別人上傳到此遠端倉庫中的所有更新（或是上次 fetch 以來別人提交的更新）。有一點很重要，需要記住，fetch 命令只是將遠端的資料拉到本地倉庫，並不自動合併到當前工作分支，只有當你確實準備好了，才能手工合併。&lt;br /&gt;
&lt;br /&gt;
如果設置了某個分支用於跟蹤某個遠端倉庫的分支（參見下節及第三章的內容），可以使用 git pull 命令自動抓取資料下來，然後將遠端分支自動合併到本地倉庫中當前分支。在日常工作中我們經常這麼用，既快且好。實際上，預設情況下 git clone 命令本質上就是自動創建了本地的 master 分支用於跟蹤遠端倉庫中的 master 分支（假設遠端倉庫確實有 master 分支）。所以一般我們運行 git pull，目的都是要從原始克隆的遠端倉庫中抓取資料後，合併到工作目錄中當前分支。&lt;br /&gt;
&lt;br /&gt;
=推送(push)資料到遠端倉庫=&lt;br /&gt;
&lt;br /&gt;
專案進行到一個階段，要同別人分享目前的成果，可以將本地倉庫中的資料推送到遠端倉庫。實現這個任務的命令很簡單： git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin 伺服器上（再次說明下，克隆操作會自動使用預設的 master 和 origin 名字），可以運行下面的命令：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
只有在所克隆的伺服器上有寫許可權，或者同一時刻沒有其他人在推資料，這條命令才會如期完成任務。如果在你推資料前，已經有其他人推送了若干更新，那你的推送操作就會被駁回。你必須先把他們的工作成果抓取到本地，並整合到你的工作成果中，然後才可以再次推送。有關推送資料到遠端倉庫的詳細內容見第三章。&lt;br /&gt;
&lt;br /&gt;
=查看遠端倉庫資訊=&lt;br /&gt;
&lt;br /&gt;
我們可以通過命令 git remote show [remote-name] 查看某個遠端倉庫的詳細資訊，比如要看所克隆的 origin 倉庫，可以運行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git remote show origin&lt;br /&gt;
* remote origin&lt;br /&gt;
  URL: git://github.com/schacon/ticgit.git&lt;br /&gt;
  Remote branch merged with 'git pull' while on branch master&lt;br /&gt;
    master&lt;br /&gt;
  Tracked remote branches&lt;br /&gt;
    master&lt;br /&gt;
    ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
除了對應的克隆位址外，它還給出了許多額外的資訊。它友善地告訴你如果是在 master 分支，就可以用 git pull 命令抓取資料合併到本地。另外還列出了所有處於跟蹤狀態中的遠端分支。&lt;br /&gt;
&lt;br /&gt;
實際使用過程中，git remote show 給出的資訊可能會像這樣：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git remote show origin&lt;br /&gt;
* remote origin&lt;br /&gt;
  URL: git@github.com:defunkt/github.git&lt;br /&gt;
  Remote branch merged with 'git pull' while on branch issues&lt;br /&gt;
    issues&lt;br /&gt;
  Remote branch merged with 'git pull' while on branch master&lt;br /&gt;
    master&lt;br /&gt;
  New remote branches (next fetch will store in remotes/origin)&lt;br /&gt;
    caching&lt;br /&gt;
  Stale tracking branches (use 'git remote prune')&lt;br /&gt;
    libwalker&lt;br /&gt;
    walker2&lt;br /&gt;
  Tracked remote branches&lt;br /&gt;
    acl&lt;br /&gt;
    apiv2&lt;br /&gt;
    dashboard2&lt;br /&gt;
    issues&lt;br /&gt;
    master&lt;br /&gt;
    postgres&lt;br /&gt;
  Local branch pushed with 'git push'&lt;br /&gt;
    master:master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
它告訴我們，當你執行 git push 命令時哪些分支會自動被推送（譯注：最後兩行）。它還顯示了有哪些遠端分支還沒有同步到本地（譯注：第六行的 caching 分支），哪些已同步到本地的遠端分支在遠端伺服器上已被刪除（譯注：Stale tracking branches 下面的兩個分支），以及運行 git pull 時將自動合併哪些分支（譯注：前四行中列出的 issues 和 master 分支）。&lt;br /&gt;
&lt;br /&gt;
=遠程倉庫的刪除和重命名=&lt;br /&gt;
&lt;br /&gt;
在新版 Git 中可以用 git remote rename 命令修改某個遠端倉庫的簡短名稱，比如想把 pb 改成 paul，可以這麼運行：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git remote rename pb paul&lt;br /&gt;
$ git remote&lt;br /&gt;
origin&lt;br /&gt;
paul&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意，對遠端倉庫的重命名，也會使對應的分支名稱發生變化，原來的 pb/master 分支現在成了 paul/master。&lt;br /&gt;
&lt;br /&gt;
碰到遠端倉庫伺服器遷移，或者原來的克隆鏡像不再使用，又或者某個參與者不再貢獻代碼，那麼需要移除對應的遠端倉庫，可以運行 git remote rm 命令：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git remote rm paul&lt;br /&gt;
$ git remote&lt;br /&gt;
origin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>imported&gt;Ray</name></author>
	</entry>
</feed>