1Gitolite介绍
轻量级,开源项目,使用SSH公钥认证,能做到分支级的权限控制。
2.1创建用户
$ adduser git #创建用户
$ passwd git #给新建的用户设置密码
2.2安装gitolite
$ su – git #切换到新创建的用户
$ mkdir bin 创建bin目录
$ git clone https://github.com/sitaramc/gitolite.git #下载gitolite
$ ls #查看当前目录下文件
bin gitolite
$ ./gitolite/install -to /home/git/bin/ #安装gitolite
$ cd bin/
$ls
commands gitolite gitolite-shell lib syntactic-sugar triggers VERSION VREF
2.3生成管理员帐户公钥
$ su - #切换回root用户
$ git config --global user.name “git” #设置用户
$ git config --global user.email “git@baidu.com” #设置邮箱
$ ssh-keygen -t rsa #生成公钥
$ cp .ssh/id_ras.pub /tmp/admin.pub
2.4为gitolite配置管理员
$ su – git #切换回git用户
$ /home/git/bin/gitolite setup -pk /tmp/admin.pub
$ ls
bin gitolite projects.list repositories
2.5下载管理配置
$ su – #切换回root用户
$ cd /var/www/html
$ git clone git@192.168.213.130:gitolite-admin
$ cd gitolite-admin
$ ls
conf keydir
3添加用户
3.1添加公钥
$ cp test123.pub /root/gitolite-admin/keydir/
3.2设置权限
4创建新资源
$ git config --global push.default simple
$ git remote add origin git@172.16.87.148:test133
$ git push --set-upstream origin master
5禁用sell登录
禁用shell登录
注,出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
[root@git ~]# cat /etc/passwd | grep git
git❌1001:1001:git version control:/home/git:/bin/bash
改为:
[root@git ~]# vim /etc/passwd
git❌1001:1001:git version control:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
6Git命令
6.1git status
查看当前项目变动情
6.2git add <path/fileName>
要提交的文件(”.”提交所有变动的文件)
git add XX #加单个文件
git add . #加所有
6.3git commit –m ‘注释’
提交到本地仓库
git commit #提交(系统会默认让用户添加提交信息)
git commit –m “XXXX” #直接添加简单提交信息
git status #查看项目状态
git log #查看版本信息
git log –p #查看版本信息并显示每次修改的diff
git show sdjf974654dd…. #查看指定版本信息
6.4git push
提交到远程仓库
7分支
7.1git branch
查看本地分支
git branch –a 查看远程仓库
7.2git checkout -b zhangsan
创建并切换分支
git push --set-upstream origin zhangsan 将本地分支与远程绑定
注:zhangsan:分支名称
7.3git checkout 分支名称
切换分支
7.43将分支与主枝master合并
git checkout master #(首先切换回主枝)
git merge AAA #(将分支AAA与主枝合并)
8 撤销与恢复 git reset
git reset --hard #回到原来编辑的地方
#(同样适用于团队对于其他人的修改恢复)
git reset --hard sdv143kvf…… #可回到指定的版本
#(hard后面为每次提交系统自动生成的一串哈希值)