CentOS搭建GIT服务器【一】-仓库搭建以及基于gitosis的SSH方式访问
1、安装GIT核心
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc gcc-c++ -y
wget https://www.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz
tar -zvxf git-2.0..tar.gz 解压
进入git解压目录,然后配置、安装:
autoconf
./configure --with-curl=/usr/local
make
sudo make install
报错
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line .
make[]: *** [perl.mak] 错误
make: *** [perl/perl.mak] 错误
看起来应该是perl的问题,perl-version发现perl已经安装了,google一把,是perl的一个包的问题,参见右边解决了:http://my.oschina.net/indestiny/blog/223082
yum install perl-ExtUtils-MakeMaker package
然后继续 make && make install
安装后显示信息:
make[]: Leaving directory `/usr/local/git-2.0./git-gui'
bindir=$(cd '/usr/local/bin' && pwd) && \
execdir=$(cd '/usr/local/libexec/git-core' && pwd) && \
{ test "$bindir/" = "$execdir/" || \
for p in git git-shell git-upload-pack git-cvsserver; do \
rm -f "$execdir/$p" && \
test -z "" && \
ln "$bindir/$p" "$execdir/$p" >/dev/null || \
cp "$bindir/$p" "$execdir/$p" || exit; \
done; \
} && \
for p in git-receive-pack git-upload-archive; do \
rm -f "$bindir/$p" && \
test -z "" && \
ln "$bindir/git" "$bindir/$p" >/dev/null || \
ln -s "git" "$bindir/$p" >/dev/null || \
cp "$bindir/git" "$bindir/$p" || exit; \
done && \
for p in git-add git-annotate git-apply git-archive git-bisect--helper git-blame git-branch git-bundle git-cat-file git-check-attr git-check-ignore git-check-mailmap git-check-ref-format git-checkout-index git-checkout git-clean git-clone git-column git-commit-tree git-commit git-config git-count-objects git-credential git-describe git-diff-files git-diff-index git-diff-tree git-diff git-fast-export git-fetch-pack git-fetch git-fmt-merge-msg git-for-each-ref git-fsck git-gc git-get-tar-commit-id git-grep git-hash-object git-help git-index-pack git-init-db git-log git-ls-files git-ls-remote git-ls-tree git-mailinfo git-mailsplit git-merge git-merge-base git-merge-file git-merge-index git-merge-ours git-merge-recursive git-merge-tree git-mktag git-mktree git-mv git-name-rev git-notes git-pack-objects git-pack-redundant git-pack-refs git-patch-id git-prune-packed git-prune git-push git-read-tree git-receive-pack git-reflog git-remote git-remote-ext git-remote-fd git-repack git-replace git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-send-pack git-shortlog git-show-branch git-show-ref git-stripspace git-symbolic-ref git-tag git-unpack-file git-unpack-objects git-update-index git-update-ref git-update-server-info git-upload-archive git-var git-verify-pack git-verify-tag git-write-tree git-cherry git-cherry-pick git-format-patch git-fsck-objects git-init git-merge-subtree git-show git-stage git-status git-whatchanged; do \
rm -f "$execdir/$p" && \
test -z "" && \
ln "$execdir/git" "$execdir/$p" >/dev/null || \
ln -s "git" "$execdir/$p" >/dev/null || \
cp "$execdir/git" "$execdir/$p" || exit; \
done && \
remote_curl_aliases="git-remote-https git-remote-ftp git-remote-ftps" && \
for p in $remote_curl_aliases; do \
rm -f "$execdir/$p" && \
test -z "" && \
ln "$execdir/git-remote-http" "$execdir/$p" >/dev/null || \
ln -s "git-remote-http" "$execdir/$p" >/dev/null || \
cp "$execdir/git-remote-http" "$execdir/$p" || exit; \
done && \
./check_bindir "z$bindir" "z$execdir" "$bindir/git-add"
然后查看一下:
[root@bxcs_repository local]# git
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>] 最常用的 git 命令有:
add 添加文件内容至索引
bisect 通过二分查找定位引入 bug 的变更
branch 列出、创建或删除分支
checkout 检出一个分支或路径到工作区
clone 克隆一个版本库到一个新目录
commit 记录变更到版本库
diff 显示提交之间、提交和工作区之间等的差异
fetch 从另外一个版本库下载对象和引用
grep 输出和模式匹配的行
init 创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log 显示提交日志
merge 合并两个或更多开发历史
mv 移动或重命名一个文件、目录或符号链接
pull 获取并整合另外的版本库或一个本地分支
push 更新远程引用和相关的对象
rebase 本地提交转移至更新后的上游分支中
reset 重置当前HEAD到指定状态
rm 从工作区和索引中删除文件
show 显示各种类型的对象
status 显示工作区状态
tag 创建、列出、删除或校验一个GPG签名的 tag 对象 命令 'git help -a' 和 'git help -g' 显示可用的子命令和一些指南。参见
'git help <命令>' 或 'git help <指南>' 来查看给定的子命令帮助或指南。 [root@bxcs_repository local]# git --version
git version 2.0.
安装成功了。
2、安装openssl等(执行了最上面的脚本的话就不用了)
yum install -y gettext-devel expat-devel curl-devel zlib-devel openssl-devel
3、安装python setuptools包
yum install python python-setuptools
4、用我们刚刚安装的git下载gitosis并安装:
下载
git clone git://github.com/res0nat0r/gitosis.git
进入
cd gitosis/
用刚安装的python 安装gitosis
python setup.py install
显示如下信息就说明安装成功了:
creating /usr/lib/python2./site-packages/gitosis-0.2-py2..egg
Extracting gitosis-0.2-py2..egg to /usr/lib/python2./site-packages
Adding gitosis 0.2 to easy-install.pth file
Installing gitosis-init script to /usr/bin
Installing gitosis-run-hook script to /usr/bin
Installing gitosis-serve script to /usr/bin Installed /usr/lib/python2./site-packages/gitosis-0.2-py2..egg
Processing dependencies for gitosis==0.2
Searching for distribute==0.6.
Best match: distribute 0.6.
Adding distribute 0.6. to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.6 script to /usr/bin Using /usr/lib/python2./site-packages
Finished processing dependencies for gitosis==0.2
5、本地生成key,公钥上传到server上:
ssh-keygen -t rsa -C "xxxx@xxxxx"
一路回车,把is_rsa.pub公钥上传到server的tempKeys目录上。
6、在Server上新建git管理员用户,初始化:
adduser git # 新增一个git用户
su - git # 切换git用户
[git@bxcs_repository gitosis]$ gitosis-init <tempPubKeys/id_rsa.pub
初始化空的 Git 版本库于 /home/git/repositories/gitosis-admin.git/
重新初始化现存的 Git 版本库于 /home/git/repositories/gitosis-admin.git/
上面的初始化,已经将本地公钥初始化到gitosis中,本地机器成为管理员权限机器。
必须以git用户初始化,否则后来clone gitosis-admin.git时会有问题,必须输密码!(主要是仓库地址要放在/home/git/repositories/gitosis-admin.git/,而不是/home/repositories/gitosis-admin.git/)
7、本地下载管理端项目gitosis-admin:
在本地下载server上的管理端gitosis-admin到目录/usr/local/gitosis-admin下:
git clone git@192.168.3.30:gitosis-admin.git
然后看看配置文件:
Administrator@HG-20140421APSR /usr/local/gitosis-admin
$ cat gitosis.conf
[gitosis] [group gitosis-admin] #组名
writable = gitosis-admin #项目名
members = Administrator@HG-20140421APSR #团队成员名(必须和密钥名一致),多个用空格隔开
密钥统统放在下面这个目录中:
$ ls keydir/
Administrator@HG-20140421APSR.pub
9、新建项目:
PS:如果有新加入的成员,需要生成公钥发给管理员。管理员将新的公钥放在管理项目gitosis-admin的这个目下,然后再上面的conf中配置好权限,commit、push下这个项目到git Server就OK了。如下:
先加权限:
先在gitosis.conf中添加如下分组、成员信息:
[group bxcs]
writable = bxcs
members = xxx@xxx Administrator@HG-20140421APSR
然后在keydir中添加公钥
提交到admin项目:
git add .
git commit -m "修改权限,创建XXXX项目"
git push
初始化项目:
进入我们的项目工作空间
#初始化
git init
git add .
git commit -m "初始化项目" #然后提交!
git remote add origin git@192.168.X.XX:bxcs.git
git push origin master
或者用下面一行提交:
git push git@192.168.x.xx:bxcs.git master
OK
搭建过程参考了:
http://zwm-xl.blog.sohu.com/170050241.html
http://blog.sina.com.cn/s/blog_904dee7f0101gait.html
http://blog.csdn.net/ice520301/article/details/6142503
CentOS搭建GIT服务器【一】-仓库搭建以及基于gitosis的SSH方式访问的更多相关文章
- 在CentOS搭建Git服务器 转
在CentOS搭建Git服务器 来自 :http://www.jianshu.com/p/69ea5ded3ede 前言 我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了.公 ...
- CentOS搭建Git服务器及权限管理
声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考. 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSS ...
- 在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的
在centos搭建git服务器时,不小心把/home/git目录删除了,我是怎么恢复的 在删除掉/home/git目录后,每次 git push提交时,都让填写密码,烦 第一步:在本地找到id_rsa ...
- centos 搭建git服务器
centos 6搭建git服务器 安装 rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm yum ins ...
- 自定义Git之使用centos搭建git 服务器
Github 公开的项目是免费的,但是如果你不想让其他人看到你的项目就需要收费. 这时我们就需要自己搭建一台Git服务器作为私有仓库使用. 接下来我们将以 Centos 为例搭建 Git 服务器. 1 ...
- Centos搭建 Git 服务器教程
搭建 GIT 服务器教程 下载安装 git Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服 ...
- CentOS 搭建 Git 服务器
官方文档移步 Git 服务器的搭建 安装 Git #yum install git 创建 Git 专用用户 #useradd git,改密码 #passwd git,切换至 Git 用户 #su gi ...
- CentOS搭建git服务器实测
Git 可以使用四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议 1,安装: CentOS/Fedora: yum install git Ubuntu/Debian: ...
- CentOS搭建GIT服务器
安装git # 请确保您切换到了root账户 $ su root $ yum install -y git # 验证是否安装成功 $ git --version # 输出如下内容表示成功: git v ...
随机推荐
- 【转】Oracle job procedure 存储过程定时任务
原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相 ...
- 让你的 Node.js 应用跑得更快的 10 个技巧
Node.js 受益于它的事件驱动和异步的特征,已经很快了.但是,在现代网络中只是快是不行的.如果你打算用 Node.js 开发你的下一个Web 应用的话,那么你就应该无所不用其极,让你的应用更快,异 ...
- C语言实现的顺序表
顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...
- 2016031401 - ubuntu显示桌面快捷键
ubuntu显示桌面快捷键设置 步骤如下:系统设置->键盘->快捷键->窗口->最小化窗口 个人设置的是super+D,super就是window下的win键.
- 警惕arm-linux-gcc编译器优化选项
arm-linux-gcc的优化选项例如(-O2),可以加速我们的程序,使程序执行效率更高.但是,倘若我们就是需要程序慢一点运行,但是优化却把我们的延时函数优化的没有了的时候,这种优化却不是我们想要的 ...
- asp.net中Timer定时器在web中无刷新的使用
最近在做一个项目的时候,web端的数据需要与数据源进行实时同步,并保证数据的准确性,当时,考虑到使用ajax异步刷新技术.但后来在网上查找相关资料时,发现这样做,太浪费资源了,因为ajax的提交请求不 ...
- C++的类和对象
#include <iostream> // 预处理命令 using namespace std; class Student{ // 声明一个类,类名为Student private : ...
- Ubuntu/Linux下7款轻量级编辑器 (转)
From http://www.feiyan.info/39.html 在Windows卧铺使用Zend Studio或者EditPlus写PHP,Zend Studio适合大项目,EditPlus配 ...
- Kaggle Competition Past Solutions
Kaggle Competition Past Solutions We learn more from code, and from great code. Not necessarily alwa ...
- poj 1284 Primitive Roots
从来没有接触过完全剩余系,不会证明,知道看了别人的题解才知道要用欧拉函数: 下面是证明过程: p是奇素数,如果{xi%p | 1 <= i <= p - 1} = {1,2,...,p-1 ...