搭建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的访问权限控制
 

git server 搭建指南的更多相关文章

  1. 用开源 ASP.NET MVC 程序 Bonobo Git Server 搭建 Git 服务器(转)

    用开源 ASP.NET MVC 程序 Bonobo Git Server 搭建 Git 服务器   现在不用Git,都不好意思说自己是程序员. 当你想用Git,而源代码服务器是Windows系统时,你 ...

  2. windows下git server搭建

    使用gitblit1.8搭建 首先要安装JDK 然后下载gitblit,这里给一个CSDN下载 https://download.csdn.net/download/nietzsche0/104826 ...

  3. Setup a private http/nginx based GIT server

    原文:http://aaba.me/blog/2014/03/setup-a-private-http-nginx-based-git-server.html https://doomzhou.git ...

  4. Ubuntu server 搭建Git server

    Ubuntu server 搭建Git server,git相比svn,最主要就是分布式了,每个客户端用户的本地都是一个版本管理控制器. Ubuntu server 版本为12.04 搭建步骤如下: ...

  5. 在 mac os 上搭建 git server

    前言:之前学习了如何使用 git 后,一直想搭建一个本机搭建一个 git server 的,一开始不知道走了弯路用了 gitosis,折腾了我好几天都没配置好.昨晚查资料发现 gitosis 早就过时 ...

  6. # 基于Gitolite搭建Git Server - 支持SSH&HTTP

    Git, 一个分布式的版本管理工具,我认为其革命性的点:在于改变了用户协作的方式,使得协作更简单. 下面讲述 使用一个开源软件 Gitolite搭建一个Git Sever, 并给了一个推荐的团队协助方 ...

  7. 搭建Git Server

    windows上如何搭建Git Server   Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用.那么私有 ...

  8. Windows下搭建Git 服务器: BONOBO GIT SERVER + TortoiseGit

    本文将介绍如何在Windows操作系统下搭建Git服务器和客户端.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配 ...

  9. Ubuntu 搭建简单的git server

    Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议. 在此,我们将会讨论那些协议及哪些情形应该使用(或避免使用)他 ...

随机推荐

  1. 报错信息:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    用Eclipse创建jsp页面时,提示这个错误 解决的方法是:右键项目,Build Path->Configure Build Path Add Library Server Runtime,这 ...

  2. LUN mask 和zone 区别

    问题: 在SAN网络中,只有一台存储时,该存储带有Map功能,可以将LUN Map到指定主机,那么FC Switch的zoning功能还有意义吗?有没有方法来证明这以意义的存在.即使存储不带有Map功 ...

  3. Linux中进程与线程及CPU使用率查询

    一.进程查询: ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 说明:PCPU是Cpu使用率,8核最多是800. 或者 ps -aux 二.线 ...

  4. Linux安装pear包

    一.安装pear包. 1.安装: $ sudo wget http://pear.php.net/go-pear.phar $ sudo php go-pear.har 2.查看pear下安装的包: ...

  5. C#通过代码调用PowerShell

    var userId = "MyAccount@XXXXX.partner.onmschina.cn"; var tenantId = "XXXXX-ca13-4bcb- ...

  6. Executor并发框架--线程池,ThreadToolExecutor初步

    Executor存在的目的是提供一种将"任务提交"与"任务如何运行"分离开来的机制.虽然只有一个方法,但是却为灵活且强大的异步任务执行框架提供了基础.它提供了一 ...

  7. 记:青岛理工ACM交流赛筹备工作总结篇

    这几天筹备青岛理工ACM交流赛的过程中遇到了不少问题也涨了不少经验.对非常多事也有了和曾经不一样的看法, ​一直在想事后把这几天的流水帐记一遍,一直没空直到今天考完C++才坐下来開始动笔.将这几天的忙 ...

  8. java new关键字

    //new关键字://1.表示创建一个对象//2.表示实例化对象//3.表示申请内存空间 在python中其实就是一个实例化的过程

  9. 转: Ogre实现无缝地图要改的地方 记下来 用的时候可以看

    //OgreTerrainQuadTreeNode.hSceneNode* getLocalSceneNode(){return mLocalNode;} //OgreTerrain.huint16 ...

  10. 在spring boot微服务中使用JWS发布webService

    发布时间:2018-11-22   技术:Java+spring+maven   概述 在springboot微服务中使用JWS发布webService,在服务启动时自动发布webservice接口. ...