假設你個人的倉庫在目錄 ~/proj. 我們先克隆一個新的“裸倉庫“,并且創建一個標志文件告訴git-daemon這是個公共倉庫。
~~~
$ git clone --bare ~/proj proj.git
$ touch proj.git/git-daemon-export-ok
~~~
上面的命令創建了一個proj.git目錄, 這個目錄里有一個“裸git倉庫" -- 即只有'.git'目錄里的內容,沒有任何簽出(checked out)的文件。
下一步就是你把這個 proj.git 目錄拷到你打算用來托管公共倉庫的主機上. 你可以用scp, rsync或其它任何方式。
## 通過git協議導出git倉庫
用git協議導出git倉庫, 這是推薦的方法。
如果這臺服務器上有管理員,TA們要告訴你把倉庫放在哪一個目錄中, 并且“git:// URL”除倉庫目錄部分外是什么.
你現在要做的是啟動?[git daemon](http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html); 它會監聽在 9418端口. 默認情況下它會允許你訪問所有的git目錄(看目錄中是否有git-daemon-export-ok文件). 如果以某些目錄做為 git-daemon 的參數, 那么 git-daemon 會限制用戶通過git協議只能訪問這些目錄。
你可以在inetd service模式下運行 git-daemon; 點擊?[git daemon](http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html) 可以查看幫助信息。
## 通過http協議導出git倉庫
git協議有不錯的性能和可靠性, 但是如果主機上已經配好了一臺web服務器,使用http協議(git over http)可能會更容易配置一些。
你需要把新建的"裸倉庫"放到Web服務器的可訪問目錄里, 同時做一些調整,以便讓web客戶端獲得它們所需的額外信息。
~~~
$ mv proj.git /home/you/public_html/proj.git
$ cd proj.git
$ git --bare update-server-info
$ chmod a+x hooks/post-update
~~~
(最后兩行命令的解釋可以點擊這里查看:?[git update-server-info](http://www.kernel.org/pub/software/scm/git/docs/git-update-server-info.html)?&?[githooks](http://www.kernel.org/pub/software/scm/git/docs/githooks.html).)
拼好了proj.git的web URL, 任何人都可以從這個地址來克隆(clone)或拉取(pull) git倉庫內容. 下面這個命令就是例子:
~~~
$ git clone http://yourserver.com/~you/proj.git
~~~
- 1. 介紹
- 歡迎使用Git
- GIT對象模型
- Git目錄 與 工作目錄
- Git索引
- 2. 第一步
- 安裝Git
- 安裝與初始化
- 3. 基本用法
- 獲得一個Git倉庫
- 正常的工作流程
- 分支與合并@基礎
- 查看歷史 -Git日志
- 比較提交 - Git Diff
- 分布式的工作流程
- Git標簽
- 4. 中級技能
- 忽略某些文件
- rebase
- 交互式rebase
- 交互式添加
- 儲藏
- Git樹名
- 追蹤分支
- 使用Git Grep進行搜索
- Git的撤消操作 - 重置, 簽出 和 撤消
- 維護Git
- 建立一個公共倉庫
- 建立一個私有倉庫
- 5. 高級技能
- 創建新的空分支
- 修改你的歷史
- 高級分支與合并
- 查找問題的利器 - Git Bisect
- 查找問題的利器 - Git Blame
- Git和Email
- 定制Git
- Git Hooks
- 找回丟失的對象
- 子模塊
- 6. Git生態體系
- Git 與之 Windows
- 使用Git進行系統部署
- 與 Subversion 集成
- 從其他代碼管理工具遷移到Git
- 圖形化的Git
- Git倉庫托管
- Git的其它用法
- Git的腳本支持
- Git 與編輯器
- 7. 原理解析
- Git是如何存儲對象的
- 查看Git對象
- Git引用
- Git索引
- 打包文件
- 更底層的Git
- 傳輸協議
- 術語表