搭建私有git服务器进行版本控制

一、安装git


分别在服务器和本地安装最新版本的git


1、服务器上源码安装最新版git


通常centos上使用yum源安装的git版本过低


检查系统上是否已经安装git,若已有则卸载


// 查看当前git版本
# git --version
git version 1.7.1

// 卸载旧版本
# yum remove -y git


安装依赖包,下载最新版本git源码


# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
# wget https://github.com/git/git/archive/v2.13.2.tar.gz
# tar zxf v2.13.2.tar.gz


安装git,配置环境变量


# cd git-2.13.2
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc    // 实时生效


查看git版本号,正确显示则安装成功


# git --version
git version 2.13.2


若编译时报错如下


libgit.a(utf8.o): In function `reencode_string_iconv':
/usr/local/src/git-2.13.2/utf8.c:463: undefined reference to `libiconv'

libgit.a(utf8.o): In function `reencode_string_len':
/usr/local/src/git-2.13.2/utf8.c:524: undefined reference to `libiconv_open'

/usr/local/src/git-2.13.2/utf8.c:535: undefined reference to `libiconv_close'
/usr/local/src/git-2.13.2/utf8.c:529: undefined reference to `libiconv_open'

collect2: ld returned 1 exit status
make: *** [git-credential-store] Error 1


可以按照如下方式解决


// 对之前git的make 操作进行 make clean
# make clean
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
# tar zxf libiconv-1.14.tar.gz
# cd libiconv-1.14
# ./configure --prefix=/usr/local/libiconv
# make && make install
// 创建一个软链接到/usr/lib
# ln -s /usr/local/lib/libiconv.so /usr/lib
# ln -s /usr/local/lib/libiconv.so.2 /usr/lib


然后


# make configure
# ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv/
# make && make install
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc


配置git 用户名及邮箱


# git config --global user.name 'your name'
# git config --global user.email 'your email address'


2、本地安装最新版git(此处演示为Windows上安装)


  • windows上安装直接下载最新版安装包,双击->下一步… 即可完成安装

  • 所有选项默认即可

  • 打开 git-bash,配置git 用户名和邮箱,同服务端配置第6步


二、服务器设置


1、添加一个git用户,为安全起见禁用shell登录


# useradd git

// 为安全起见,禁用 git 用户的 shell 登录
vim /etc/passwd
// 修改 git 用户的 shell 为 git-shell,路径使用 which git-shell 查看
// 找到如下一行
git:x:1001:1001::/home/git:/bin/bash
// 修改成如下
git:x:1001:1001::/home/git:/usr/local/git/bin/git-shell


2、初始化一个项目目录为一个仓库


// 进入到项目目录
# git init


3、将该目录克隆成为裸仓库(作为中介)并设置裸仓库所有者为git用户


// 创建一个裸仓库
# git clone --bare ProjectPath /srv/myProject.git


4、将裸仓库添加为远程仓库


// 进入到项目目录
# git remote add origin /srv/myProject.git

// 修改远程仓库所属主和所属组
# chown -R git.git /srv/myProject.git


5、将服务器上的项目添加到远程仓库即 /srv/myProject.git


# git add .
# git commit -m 'comment'
# git push origin master


6、在该用户的家目录下面保存本地用户的公钥


# su git
$ cd ~
$ make .ssh
$ chmod 700 .ssh
$ cd .ssh
$ touch authorized_keys
$ chmod 600 authorized_keys
// 然后在 authorized_keys 文件中加入本地用户的公钥 id_rsa.pub


7、打开git服务器的RSA认证


# vim /etc/ssh/sshd_config
// 找到下面3行并去掉注释
1. RSAAuthentication yes     
2. PubkeyAuthentication yes     
3. AuthorizedKeysFile  .ssh/authorized_keys


三、本地设置(Windows端)


1、生成公钥并交给服务端


// 打开 git-bash,生成公钥
$ ssh-keygen -t rsa
// 在用户目录下的.ssh目录里面会生成 id_rsa, id_rsa.pub
// 将 id_rsa.pub 里的内容拷贝到服务器上


2、在保存公钥的同级目录下面新建config文件指定ssh端口(可选)


==类似使用搬瓦工VPS的可能默认ssh端口不是22的需要配置这个==


Host your domain name or server ip
User 服务端添加的git用户名
Hostname your domain name or server ip
Port ssh 端口
IdentityFile ~/.ssh/id_rsa


3、从服务器克隆项目到本地


$ git clone [email protected]:/srv/yrsc.git


4、添加远程仓库


四、测试


  • 本地更改,添加,删除项目,然后推送修改到远程仓库

  • 服务器项目目录下拉取最新的版本


猜你喜欢

转载自blog.51cto.com/13919357/2298978