ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 4.2 在服务器上搭建 Git **创建裸仓库** 首先,需要把现有仓库导出为裸仓库,即不包含当前工作目录的仓库。 ``` $ git clone --bare my_project my_project.git ``` 该命令的效果大致等于下面的命令: ``` $ cp -Rf my_project/.git my_project.git ``` **把裸仓库放到服务器上** 剩下要做的就是把裸仓库方到服务器上并设置协议,假设一个域名为 `git.example.com` 的服务器已经架好,并可以通过 SSH 连接。假设服务器上存在 `/opt/git/` 目录,可以通过以下命令复制裸仓库来创建一个新仓库: ``` $ scp -r my_project.git user@git.example.com:/opt/git ``` 此时,其他通过 SSH 连接这台服务器并对 `/opt/git/` 目录拥有可读权限的使用者,皆可以通过以下命令克隆仓库: ``` $ git clone user@git.example.com:/opt/git/my_project.git ``` 而如果一个用户,通过使用 SSH 连接到一个服务器,并且对 `/opt/git/my_project.git` 目录有写权限,那么他将自动拥有推送权限。 如果到该项目目录中运行 `git init` 命令,并加上 `--shared` 选项,那么 Git 会自动修改该仓库目录的组权限为可写。 ``` $ cd /opt/git/my_project.git $ git init --bare --shared ``` 总结:只要在服务器上加入可以用 SSH 登陆的账号,然后把裸仓库放在大家都有读写权限的地方。 **SSH 连接** 如果需要团队里每个人都对仓库有写权限,又不能给每个人在服务器上建立账户。 * 给团队中每个人建立账号 * 在主机上建立一个 git 账户,让每个需要些权限的人发送一个 SSH 公钥,然后将其加入 git 账户的 `~/.ssh/authorized_keys` 文件。访问主机用的身份不会影响提交对象的提交者信息。 * 让 SSH 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制。