<?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_4.2_%E5%9C%A8%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%83%A8%E7%BD%B2_Git</id>
	<title>Pro Git 4.2 在伺服器部署 Git - 修訂歷史</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_4.2_%E5%9C%A8%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%83%A8%E7%BD%B2_Git"/>
	<link rel="alternate" type="text/html" href="https://jiva.dila.edu.tw/index.php?title=Pro_Git_4.2_%E5%9C%A8%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%83%A8%E7%BD%B2_Git&amp;action=history"/>
	<updated>2026-05-05T21:17:14Z</updated>
	<subtitle>本 Wiki 上此頁面的修訂歷史</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://jiva.dila.edu.tw/index.php?title=Pro_Git_4.2_%E5%9C%A8%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%83%A8%E7%BD%B2_Git&amp;diff=541&amp;oldid=prev</id>
		<title>imported&gt;Ray：​新頁面: 開始架設 Git 伺服器的時候，需要把一個現存的倉庫匯出為新的純倉庫(bare repository)——不包含當前工作目錄的倉庫。方法非常直截了當。 把...</title>
		<link rel="alternate" type="text/html" href="https://jiva.dila.edu.tw/index.php?title=Pro_Git_4.2_%E5%9C%A8%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%83%A8%E7%BD%B2_Git&amp;diff=541&amp;oldid=prev"/>
		<updated>2011-05-25T07:52:49Z</updated>

		<summary type="html">&lt;p&gt;新頁面: 開始架設 Git 伺服器的時候，需要把一個現存的倉庫匯出為新的純倉庫(bare repository)——不包含當前工作目錄的倉庫。方法非常直截了當。 把...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新頁面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;開始架設 Git 伺服器的時候，需要把一個現存的倉庫匯出為新的純倉庫(bare repository)——不包含當前工作目錄的倉庫。方法非常直截了當。 把一個倉庫克隆為純倉庫，可以使用 clone 命令的 --bare 選項。純倉庫的目錄名以 .git 結尾， 如下：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git clone --bare my_project my_project.git&lt;br /&gt;
Initialized empty Git repository in /opt/projects/my_project.git/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
該命令的輸出有點迷惑人。由於 clone 基本上等於 git init 加 git fetch，這裡出現的就是 git init 的輸出，它建立了一個空目錄。實際的物件轉換不會有任何輸出，不過確實發生了。現在在 my_project.git 中已經有了一份 Git 目錄資料的副本。&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;
$ cp -Rf my_project/.git my_project.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在設定檔中有幾個小改變；不過從效果角度講，克隆的內容是一樣的。它僅包含了 Git 目錄，沒有工作目錄，並且專門為之（譯注： Git 目錄）建立了一個單獨的目錄。&lt;br /&gt;
&lt;br /&gt;
=將純倉庫轉移到伺服器=&lt;br /&gt;
&lt;br /&gt;
有了倉庫的純副本以後，剩下的就是把它放在伺服器上並設定相關的協定。假設一個名稱為 git.example.com 的伺服器已經架設好，並可以通過 SSH 訪問，而你想把所有的 Git 倉庫儲存在 /opt/git 目錄下。只要把純倉庫複製上去：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ scp -r my_project.git user@git.example.com:/opt/git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
現在，其他對該服務器具有 SSH 存取權限並可以讀取 /opt/git 的用戶可以用以下命令克隆：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git clone user@git.example.com:/opt/git/my_project.git&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
假如一個 SSH 用戶對 /opt/git/my_project.git 目錄有寫入許可權，他會自動具有推送許可權。如果在執行 git init 命令的時候加上 --shared 選項，Git 會自動對該倉庫加上群組寫入權限。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ ssh user@git.example.com&lt;br /&gt;
$ cd /opt/git/my_project.git&lt;br /&gt;
$ git init --bare --shared&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可見選擇一個 Git 倉庫，創建一個純的版本，最後把它放在你和同事都有 SSH 訪問權的伺服器上是多麼容易。現在已經可以開始在同一專案上密切合作了。&lt;br /&gt;
&lt;br /&gt;
值得注意的是，這的的確確是架設一個少數人具有連接權的 Git 服務的全部——只要在伺服器上加入可以用 SSH 接入的帳號，然後把純倉庫放在大家都有讀寫許可權的地方。一切都做好了，無須更多。&lt;br /&gt;
&lt;br /&gt;
下面的幾節中，你會瞭解如何擴展到更複雜的設定。這些內容包含如何避免為每一個用戶建立一個帳戶，給倉庫添加公共讀取許可權，架設網頁介面，使用 Gitosis 工具等等。然而，只是和幾個人在一個不公開的專案上合作的話，僅僅是一個 SSH 伺服器和純倉庫就足夠了，請牢記這一點。&lt;br /&gt;
&lt;br /&gt;
=小型安裝=&lt;br /&gt;
&lt;br /&gt;
如果設備較少或者你只想在小型的開發團隊裡嘗試 Git ，那麼一切都很簡單。架設 Git 服務最複雜的方面之一在於帳戶管理。如果需要倉庫對特定的使用者可讀，而給另一部分用戶讀寫許可權，那麼訪問和許可的安排就比較困難。&lt;br /&gt;
&lt;br /&gt;
==SSH 存取==&lt;br /&gt;
&lt;br /&gt;
如果已經有了一個所有開發成員都可以用 SSH 訪問的伺服器，架設第一個伺服器將變得異常簡單，幾乎什麼都不用做（正如上節中介紹的那樣）。如果需要對倉庫進行更複雜的存取控制，只要使用伺服器作業系統的本地檔訪問許可機制就行了。&lt;br /&gt;
&lt;br /&gt;
如果需要團隊裡的每個人都對倉庫有寫入許可權，又不能給每個人在伺服器上建立帳戶，那麼提供 SSH 連接就是唯一的選擇了。我們假設用來共用倉庫的伺服器已經安裝了 SSH 服務，而且你通過它訪問伺服器。&lt;br /&gt;
&lt;br /&gt;
有好幾個辦法可以讓團隊的每個人都有訪問權。第一個辦法是給每個人建立一個帳戶，直截了當但過於繁瑣。反復的運行 adduser 並且給所有人設定臨時密碼可不是好玩的。&lt;br /&gt;
&lt;br /&gt;
第二個辦法是在主機上建立一個 git 帳戶，讓每個需要寫入許可權的人寄送一個 SSH 公開金鑰給你，然後將其加入 git 帳戶的 ~/.ssh/authorized_keys 文件。這樣一來，所有人都將通過 git 帳戶訪問主機。這絲毫不會影響提交的資料——訪問主機用的身份不會影響commit的記錄。&lt;br /&gt;
&lt;br /&gt;
另一個辦法是讓 SSH 伺服器通過某個 LDAP 服務，或者其他已經設定好的集中授權機制，來進行授權。只要每個人都能獲得主機的 shell 訪問權，任何可用的 SSH 授權機制都能達到相同效果。&lt;/div&gt;</summary>
		<author><name>imported&gt;Ray</name></author>
	</entry>
</feed>