git server 搭建指南

搭建git服务器的经验总结

一: Server端的设置
1. 安装 git, git-core
2. 安装 ssh-server. (代码上传通道)
3. 创建git 用户 指定其目录 和所在组
4. 在git的home目录下创建 repo_name.git 目录
5. 在git home 目录下 初始化repo_name.git 的服务器端裸仓库: git init --bare --shared Repo_name.git   (默认生成一个master分支)
6. 搜集用户的ssh public key ,放入到 .ssh 目录下,以实现ssh自动登陆,此过程较为复杂,分为两大步骤:
     1.配置sshd_config文件并重启sshd,
     2.将用户上传的rsa pub key 添加到authorized_keys文件中。 
     详细过程参见  ”三: ssh的受信用户的添加 
7. 添加远程仓库的develop / release分支:  git branch develop  ;  
8. 搭建gitweb, 用于方便开发者在线查看git提交与修改。参见 " 四:搭建gitweb的方法 "  ; 本步骤可选。
 
 
二:git客户端使用方法
 
0. 客户端: ssh-keygen -t rsa 生成密钥
1. 客户端: 将生成的id_rsa.pub 传给git管理者。对应于Server端的第六点。
2.客户端 : git clone git@172.26.186.177:/home/git/Repo_name.git
3.客户端:  添加代码
4.客户端: git  status ;  git add . ; git commit -m "comment for each commit"
5.客户端: 添加远程仓库:  git remote add remote_server_name git@172.26.186.117:/home/git/repo_name.git   本地:git remote add local D:\code\reponame.git
6.客户端: 配置git config --global, 对于你的每次提交都是必须的,这样在git server端的gitweb网站上可以清楚地看到谁提交了,email多少。
                1.  $ git config --global user.name  wangwang
            2. $ git config --global user.email wangwang@tec.com
7.客户端: push 本地代码到 远程仓库的指定分支:  git push remote_server_name  local_branch_name:remote_branch_name ;  (此时可以指定提交到远程分支的develop 还是 master)
 
 
 三: ssh的受信用户的添加 
 为实现ssh自动登陆,需搜集用户的ssh public key ,放入到 .ssh 目录下的authorized_keys文件末尾,此过程较为复杂,分为两大步骤:
     1.配置sshd_config文件并重启sshd,
     2.将用户上传的rsa pub key 添加到authorized_keys文件中。 
 
详细过程如下:
 
I. 配置sshd_config文件,并重启:
     1. su root  ;sshd_config位于/etc/ssh/ 文件夹下,需要使用root权限,同时如果出现 could not load host key: rsa_key dsa_key ecdsa_key,     也是由于这个原因,因为这三个文件只有root用户拥有读权限。
     2. vim sshd_config 
     3. 取消AuthorizedKeysFile的注释,并修改为 AuthorizedKeysFile      /home/git/.ssh/authorized_keys 
     4.重启sshd : /usr/sbin/sshd
 
II. 上传rsa pub key, 并将其添加到authorized_keys文件中。

  1. scp id_rsa.pub git@172.26.186.117:/home/git/        ; 远程拷贝
  2. mv id_rsa.pub  rename.pub                                   ; 重命名以避免与。ssh文件夹中的已有文件重名。
  3. mv rename.pub .ssh/                                            ; 移动到.ssh
  4. cat rename.pub >> authorized_keys                      ; 将该用户 添加到受信任的ssh-rsa 列表中, 很多人将此authorized_keys误认为是文件夹,从而导致添加后,客户端登陆依然失败。
注意:如果用户的id_rsa.pub 已经加入到authorized_keys, 但 git clone git@172.26.186.117:/home/git/PmsAndroid.git 后出现如下的提示信息
Agent admitted failure to sign using the key.
git@172.26.186.117's password: 
则说明授权验证的ssh-agent 没有将密钥随着请求, 需要使用ssh-add 来添加, 若ssh-add添加失败,请先运行ssh-agent 。
 
 
四:搭建gitweb的方法
   1. 在一个仓库目录下,使用git instaweb 命令即可启动运行。
默认是在1234端口。
 
 
五: 搭建gitosis / gitblit ,以方便管理员远程管理git server 的repostries。
 
 
 
六: git Server端 repo的访问权限控制