搭建 Git 服務器最重要的是 .git 文件夾和裏面的內容,git
建立一個裸倉庫:shell
$ git clone --bare my_project/.git myproject.git
該命令等效於:bash
$ cp -Rf my_project/.git myproject.git
這樣就能夠取出 倉庫 自己,而不是工做目錄服務器
而後把 myproject.git 上傳到服務器上,若服務器上的路徑爲 /src/myproject.gitssh
$ git clone user@server.com:/src/myproject.git
經過這個命令就能夠拷貝倉庫了。在這以前首先要在服務器上設置該 Git 倉庫能夠共享:spa
$ cd /src/myproject.git
$ git init --bare --shared
另外,也能夠用服務器上的 git 用戶在服務器上建立一個空的 git 倉庫,以後再在本地上將任意一個 git 倉庫 push 到服務器上。操做是相似的。3d
倉庫拷貝下來後就有全部的文件都會在當前的目錄下面,那麼就能夠開始項目了。code
以後的操做就像使用 GitHub 同樣,不過遠程倉庫並非在 GitHub 上而是在私有的服務器上。server
可是這樣的話,在每次 push 或者 pull 操做都須要輸入密碼。blog
首先在服務器上添加一個專門用於 git 訪問的用戶
$ sudo adduser git $ su git $ cd ~ $ mkdir .ssh && chmod 700 .ssh $ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
這樣就建立了用戶 git,而且 git 在 /home 目錄下有本身的 HOME 目錄。
以後是在 git 的 HOME 目錄中建立 .ssh 文件夾和 authorized_keys 文件,權限設置爲僅能 git 用戶訪問。
而後收集須要訪問該 Git 服務器上的用戶的公鑰,通常公鑰存放在 id_rsa.pub 文件中:
~/.ssh/id_rsa.pub
若 A 把本身的公鑰文件上傳到服務器上,用 git 用戶添加到 /home/git/.ssh/authorized_keys 這個文件中,那麼 A 就能夠經過 SSH 訪問 git 倉庫,而不用再輸入密碼。
若是須要限制 git 用戶的 shell 訪問,能夠將 /etc/passwd 文件中的 git 那一行的 /bin/bash 改爲 /usr/bin/git-shell 就能夠限制 git 用戶的 shell 登錄了。:
references: