ifconfig
2在服务器上安装git及做些 *** 作
- 执行命令
`
sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
`
- 同时下载git-1822targz文件,然后将其`mv` 到`/usr/local/src`目录。[git-1822targz安装包下载地址][1]
```
cd /usr/local/src
sudo tar -zvxf git-1822targz
cd git-1822
sudo make prefix=/usr/local/git all
sudo make prefix=/usr/local/git install
```
- 增加软连接
```
sudo ln -s /usr/local/git/bin/ /usr/bin/
git --version #如果能显示版本号,即表示成功`
```
3在服务器安装gitosis
```
sudo yum install python python-setuptools
cd /usr/local/src
git clone git://githubcom/res0nat0r/gitosisgit
cd gitosis
python setuppy install
#显示Finished processing dependencies for gitosis==02即表示成功
```
4在开发机上,生产密钥并上传到服务器上
```
ssh-keygen -t rsa #一路回车,不需要设置密码
#上传公钥到服务器(默认SSH端口22)
scp ~/ssh/id_rsapub tailin@192168100202:/tmp
```
或编辑`/etc/hosts`文件,在`/etc/hosts`文件里添加如下文本:
```
# local git server
192168100202 zgit
```
然后再上传自己的公钥到服务器
```
scp ~/ssh/id_rsapub tailin@zgit:/tmp/
# 登录到git服务器
ls /tmp/id_rsapub #显示已经上传的密钥
```
5服务器上生成git用户,使用git用户并初始化`gitosis`
```
# 创建git版本管理用户 git
sudo useradd -c 'git version manage' -m -d /home/git -s bin/bash git
# 更改git用户的密码
sudo passwd git
# su 到git用户
su - git
gitosis-init < /tmp/id_rsapub
#显示以下信息即表示成功
#Initialized empty Git repository in /home/git/repositories/gitosis-admingit/
#Reinitialized existing Git repository in /home/git/repositories/gitosis-admingit/
#删除密钥
rm -rf /tmp/id_rsapub
```
6在个人开发机上导出项目管理
```
mkdir -p /repo
cd /repo
git clone git@zgit:gitosis-admingit
```
7在个人开发机增加及设置管理项目
```
cd /repo/gitosis-admin
# 查看git服务器已经上传密钥
ls keydir
cat keydir/ltl@jackliu-ThinkPadpub
#ltl@jackliu-ThinkPadpub为已经上传的开发机生成的公密
#显示密钥 最后的字符串为 密钥用户名 这里为 ltl@jackliu-ThinkPad
vim gitosisconf
#在文件尾增加以下内容
[group test-git] # 具有写权限的组名称
writable = test-git # 该组可写的项目名称
members = ltl@jackliu-ThinkPad guangyunni@yeepaycom #该组的成员(密钥用户名) 多个用户协同开发时,以空格分隔
# 如果要增加只读的组 参考如下
# [group test-git-readnoly] # 具有都权限的组名称
# readonly = test-git # 该组只读的项目名称
# members = ltl@jackliu-ThinkPad # 该组的成员
#提交修改
git add
git commit -a -m "add test-git repo"
git push
```
8在个人开发机上初始,增加及使用项目test-git
```
cd ~/repo
mkdir test-git
cd test-git
git init
touch readme
git add
git commit -a -m "init test-git"
git remote add origin git@zgit:test-gitgit
git push origin master
```
9增加协同开发者的公钥key到git服务器
- 执行`cd repo/gitosis-admin/keydir`切换目录
- 把协同开发者的id_rsapub 文件里的数据 拷贝到 对应的开发者的`密钥用户名pub`文件。如把密钥用户名 guangyunni@yeepaycom 的 id_rsapub 文件中文本 粘贴到 guangyunni@yeepaycompub 文件里,并保存
- 然后将添加数据后的目录更新到git服务器
```1架设Git服务器我们以Ubuntu为例。首先,在git服务器上创建一个名为'git'的用户,并为其创建一个ssh目录。并将其权限设置为仅git用户有读写权限$sudoaddusergit$sugit$cd$mkdirssh$chmod700ssh接下来,把开发者的SSH公钥添加到这个用户的authorized_keys文件中。假设你通过电邮收到了几个公钥并存到了临时文件里。重复一下,公钥大致看起来是这个样子:$cat/tmp/id_rsajohnpubssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJICUvax2T9va5gsg-keypair只要把它们逐个追加到authorized_keys文件尾部即可,同时将authorized_keys设置为仅git用户有读写权限。$cat/tmp/id_rsajohnpub>>~/ssh/authorized_keys$cat/tmp/id_rsajosiepub>>~/ssh/authorized_keys$cat/tmp/id_rsajessicapub>>~/ssh/authorized_keys$chmod600~/ssh/authorized_keys现在可以用--bare选项运行gitinit来建立一个裸仓库,这会初始化一个不包含工作目录的仓库。$cd/opt/git$mkdirprojectgit$cdprojectgit$git--bareinit这时,Join,Josie或者Jessica就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过shell登入主机并创建一个裸仓库目录。我们不妨以gitserver作为git用户及项目仓库所在的主机名。如果在网络内部运行该主机,并在DNS中设定gitserver指向该主机,那么以下这些命令都是可用的:#在John的电脑上$cdmyproject$gitinit$gitadd$gitcommit-m'initialcommit'$gitremoteaddorigingit@gitserver:/opt/git/projectgit$gitpushoriginmaster这样,其他人的克隆和推送也一样变得很简单:$gitclonegit@gitserver:/opt/git/projectgit$vimREADME$gitcommit-am'fixfortheREADMEfile'$gitpushoriginmaster用这个方法可以很快捷地为少数几个开发者架设一个可读写的Git服务。作为一个额外的防范措施,你可以用Git自带的git-shell工具限制git用户的活动范围。只要把它设为git用户登入的shell,那么该用户就无法使用普通的bash或者csh什么的shell程序。编辑/etc/passwd文件:$sudovim/etc/passwd在文件末尾,你应该能找到类似这样的行:git:x:1000:1000::/home/git:/bin/sh把bin/sh改为/usr/bin/git-shell(或者用whichgit-shell查看它的实际安装路径)。该行修改后的样子如下:git:x:1000:1000::/home/git:/usr/bin/git-shell现在git用户只能用SSH连接来推送和获取Git仓库,而不能直接使用主机shell。尝试普通SSH登录的话,会看到下面这样的拒绝信息:$sshgit@gitserverfatal:WhatdoyouthinkIamAshellConnectiontogitserverclosed这里提供的方法,组内所有成员对project都有读写权限,也就是说每个分支都可以push代码,如果需要更加细致的权限控制,请使用Gitosis或者Gitolite。2搭建Gitweb安装gitweb之后就可以通过网站访问我们的项目了。就像gitwebconf#pathtogitprojects(git)$projectroot="/opt/git";至此gitweb就可以使用了,现在可以通过config[core]repositoryformatversion=0filemode=truebare=true[hooks]mailinglist="example@gmailcom,example2@gmailcom"#收件人列表envelopesender=projectgit@examplecom#送件人地址emailprefix="[Projectcommit]"#邮件标题前缀showrev="gitshow-C%s;echo"#不只显示有变化的文件,同时也显示改变的内容为了使邮件显示的更清楚,还要修改一下工程目录当中的description文件,在description文件中,默认第一行是项目名称,所以要在第一行填入该项目的名称,这个在邮件中会有显示。$vim/opt/git/projectgit/descriptionProject_AGit没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , >使用阿里云Ubuntu 1204 64位 *** 作系统做git服务器。首先git服务器有两种访问方式可以选择:>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)