设为首页 收藏本站
查看: 986|回复: 0

[经验分享] Git / Gitolite 的应用学习

[复制链接]

尚未签到

发表于 2018-9-18 06:50:24 | 显示全部楼层 |阅读模式
  前面写了svn相关的配置和学习,我们自己目前在用的也是svn。其大多为开发在用,且权限也分配的很精细。所以一般不需要过多的操作什么。备份方面,除了脚本备份,还有共享存储。所以一般也不会有什么问题。
  趁这几天顺便把Git也学习下,以防以后会用到这个。Git的好处就不在此多说了,相比svn那也可以罗列很多出来。另一个,git和github结合也是很好的,冲这个也应该学习下。
  由于之前的svn用到了很精细的权限控制,所以这里结合Gitolite来一起学习下。所以就分server和client。
  一、Client端:
  Linux下如果有就不需要在安装了,有没有用命令看下就好,直接在命令行敲 git 不报错即OK。没有用yum安装git就好了,windows下到官网下载安装包,直接下一步就OK。Git官网:http://git-scm.com/download/ 如果你打不开,那你懂的......
  windows下安装OK了,会有Git Bash的命令行工具。点击进去后如下:
DSC0000.jpg

  运行正常的话,我们来生成个秘钥,来为以后管理git使用。我已经生成过了,所以这里命令就不执行了。执行ssh-keygen -t rsa一路回车即可在当前用户的家目录下生成秘钥。
DSC0001.jpg

  现在要把公钥重命名下(为了方便识别用户)并上传到准备安装Git的服务器做认证。
DSC0002.jpg

  目前为止,client可以先做这么多了,如果是Linux的client,也是一样的操作。相对更方便些。
  二、Server端:
  目前CentOS6已经集成了Git,所以无需再去安装Git,但是要用到Gitolite,就需要安装了。
# cat /etc/issue  
CentOS release 6.2 (Final)
  

  
# rpm -qa git
  
git-1.7.1-2.el6_0.1.x86_64
  

  
# 新建仓库目录
  
# mkdir /src/project -pv
  

  
# 新建git用户管理git
  
# useradd git
  

  
# 做一个仓库的链接到家目录下的
  
# chown -R git.git /src
  
# su - git
  
$ ln -sv /src/project /home/git/repositories
  

  
# clone gitolite仓库
  
$ git clone git://github.com/sitaramc/gitolite
  
$ pwd
  
/home/git/gitolite
  
$ ./install --help                    # 可以查看安装的一些参数说明等信息
  
$ mkdir ../bin                        # 在家目录创建一个bin目录来安装
  
$ ./install -to /home/git/bin/        # 就是cp目录下的src目录
  

  
# 使用公钥创建初始化版本库
  
$ gitolite setup -pk /tmp/chenfeng.pub
  
Initialized empty Git repository in /src/project/gitolite-admin.git/
  
Initialized empty Git repository in /src/project/testing.git/
  
# 这样就说明成功了。
  
$ pwd
  
/home/git/repositories
  
$ ls
  
gitolite-admin.git  testing.git       # 可以看到两个目录,一个账户管理的,一个测试的
  

  
# 现在client就可以clone版本库,并进行用户管理和代码编写工作了。
  签出版本前,我们可以测试下ssh的公钥认证是否成功:
DSC0003.jpg

  如上信息。说明ssh公钥认证已正常。而且也显示了对哪些库有什么权限。否则就要检查。
  三、客户端签出版本库
  服务器端的Git是为了用户共享项目的,所以不应该直接在服务器上操作。这里就在客户端签出并管理用户和版本库。
DSC0004.jpg

  从上面可以看到,版本库签出正常。可以看到签出的gitolite-admin管理库下有两个文件夹
  conf: 配置用户权限的文件夹
  keydir: 公钥存放位置
  下面对这两个进行说明:
DSC0005.jpg

  从内容就很容易看到我们上次的ssh测试时看到权限的定义。此时我们把testing这个库的权限更改下来测试看下效果:
DSC0006.jpg

  上述的几个命令的意思:
  git add .: 添加已修改的文件到暂存区
  git commit -am "some information": 把已修改的文件都添加到暂存区并提交到仓库
  git push origin master: 推送到Git服务器到主版本
  明白上述几个参数的意思后,现在来看在同步testing的库的时候看看是什么结果:
DSC0007.jpg

  此时就报错了,提示没有权限或者访问的库不存在。从这里就可以看到简单的权限控制了,其实跟svn的差别不是很大。
  四、设置其他用户权限
  现在本地的windows客户端已经是管理员权限了,假设我们又有一台Linux的客户端也需要使用,如果给他权限,下面就来演示:
  首先生成秘钥:
# ssh-keygen -t rsa  
# cd .ssh/
  
# mv id_rsa.pub 104.pub     # 重命名是为了方便识别的
  
# yum -y install lrzsz
  
# sz 104.pub                # 下载到windows上,并放到windows上的gitolite-admin下的keysdir
  
# mkdir -pv /src/project    # 新建版本库的目录
  添加完成后,我们在windows客户端操作,使Git服务器识别该主机的信息
DSC0008.jpg

  1、我们首先把104加到testing库的权限上
  2、git status: 可以查看当前的工作区的状态信息(修改、新增等)
DSC0009.jpg

DSC00010.jpg

  这里直接省略了origin master这参数,可能会有警告。上述就是提交后并推送到服务器。此时,104这台机器对testing库就拥有了读写和更新的权限。这里的用户是和公钥的名称一致的。
  在Linux 104客户端做测试:
# cd /src/project  
# git clone git@10.95.10.103:testing
  
Initialized empty Git repository in /src/project/testing/.git/
  
warning: You appear to have cloned an empty repository.
  
# ls
  
testing
  
# 这里看到可以正常clone下一个testing库。因为testing库里面没有任何内容。所以提示为空
  到此,添加用户以及授权基本完成。并学习了几个命令。
  五、新建项目库并同步到服务器和其他用户协同工作
  1、首先要先在服务器注册库并分配权限
DSC00011.jpg

  git diff: 可以显示修改的文件内容。
  从上述可以看到
  新增了一个用户组:@platform_team,且有两个用户chengfeng 104
  新增了一个库:platform,且该组有读写更新权限,所有人有读权限
DSC00012.jpg

  此时,push后会自动在服务器端创建一个注册的库。
  然后可以在Linux客户端和windows客户端同时clone下来platform库。
# git clone git@10.95.10.103:platform  
Initialized empty Git repository in /src/project/platform/.git/
  
warning: You appear to have cloned an empty repository.
  
# ls
  
platform  testing
  
# 现在可以看到库了。
  2、创建第一个README文件
DSC00013.jpg

  上面添加了一个README文件。并推送到了Git服务器。现在Linux客户端可以pull到最新的类容了。
# cd platform/  
# git pull                    # 拉取Git服务器的最新数据
  
remote: Counting objects: 6, done.
  
remote: Compressing objects: 100% (2/2), done.
  
remote: Total 6 (delta 0), reused 0 (delta 0)
  
Unpacking objects: 100% (6/6), done.
  
From 10.95.10.103:platform
  
* [new branch]      master     -> origin/master
  
# ls
  
README
  
# cat README
  
This is Git Test File.
  现在就可以看到两台机器都有数据了。权限也是生效的。
  六、Git的一些其他命令
# git commit -m "add two lines."  
[master 0cf7775] add two lines.
  
Committer: root
  
Your name and email address were configured automatically based
  
on your username and hostname. Please check that they are accurate.
  
You can suppress this message by setting them explicitly:
  

  
    git config --global user.name "Your Name"
  
    git config --global user.email you@example.com
  

  
If the identity used for this commit is wrong, you can fix it with:
  

  
    git commit --amend --author='Your Name '
  

  
#上述提示的是因为我们在Linux客户端第一次提交修改,所以需要设置一些参数,可以设置为全局参数,也可以每次提交时都写用户和邮箱。下面我们设置全局参数。
  
# git config --global user.name "104"
  
# git config --global user.email "104@admin.com"
  
# git add .
  
# git commit -m "add two lines."
  
# git push origin master
  
Counting objects: 5, done.
  
Compressing objects: 100% (2/2), done.
  
Writing objects: 100% (3/3), 290 bytes, done.
  
Total 3 (delta 0), reused 0 (delta 0)
  
To git@10.95.10.103:platform
  
   fe2f251..0cf7775  master -> master
  
# 现在提交推送都正常了。
  现在我们在windows上checkout出最新版本:
DSC00014.jpg

  现在假如我们做了一些错误的修改,并且提交了。想回到为提交之前的版本:
DSC00015.jpg

  上面可以看到我删除了两行,也添加了新行。
DSC00016.jpg

  可以看到已经回到了刚刚更新的状态。命令如下:
  git reset --hard HEAD^: 回到所有内容到上个版本,上上个就是:HEAD^^,上10个就是:HEAD~10
  还有很多相关的命令需要慢慢去了解。
  git revert HEAD: 撤销某次提交,并生成一个新的提交
  命令太多。以后用到再说...
  如有错误,还请指出



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588801-1-1.html 上篇帖子: git pull没有指定branch报错 下篇帖子: Git命令笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表