搭建 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: