Git / Gitolite 的应用学习

前面写了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的命令行工具。点击进去后如下:

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

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

目前为止,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的公钥认证是否成功:

如上信息。说明ssh公钥认证已正常。而且也显示了对哪些库有什么权限。否则就要检查。

三、客户端签出版本库

服务器端的Git是为了用户共享项目的,所以不应该直接在服务器上操作。这里就在客户端签出并管理用户和版本库。

从上面可以看到,版本库签出正常。可以看到签出的gitolite-admin管理库下有两个文件夹

conf: 配置用户权限的文件夹

keydir: 公钥存放位置

下面对这两个进行说明:

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

上述的几个命令的意思:

git add .: 添加已修改的文件到暂存区

git commit -am "some information": 把已修改的文件都添加到暂存区并提交到仓库

git push origin master: 推送到Git服务器到主版本

明白上述几个参数的意思后,现在来看在同步testing的库的时候看看是什么结果:

此时就报错了,提示没有权限或者访问的库不存在。从这里就可以看到简单的权限控制了,其实跟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服务器识别该主机的信息

1、我们首先把104加到testing库的权限上

2、git status: 可以查看当前的工作区的状态信息(修改、新增等)

这里直接省略了origin master这参数,可能会有警告。上述就是提交后并推送到服务器。此时,104这台机器对testing库就拥有了读写和更新的权限。这里的用户是和公钥的名称一致的。

在Linux 104客户端做测试:

# cd /src/project
# git clone [email protected]: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、首先要先在服务器注册库并分配权限

git diff: 可以显示修改的文件内容。

从上述可以看到

新增了一个用户组:@platform_team,且有两个用户chengfeng 104

新增了一个库:platform,且该组有读写更新权限,所有人有读权限

此时,push后会自动在服务器端创建一个注册的库。

然后可以在Linux客户端和windows客户端同时clone下来platform库。

# git clone [email protected]:platform
Initialized empty Git repository in /src/project/platform/.git/
warning: You appear to have cloned an empty repository.
# ls
platform  testing
# 现在可以看到库了。

2、创建第一个README文件

上面添加了一个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 <[email protected]>
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 [email protected]

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

    git commit --amend --author=‘Your Name <[email protected]>‘

#上述提示的是因为我们在Linux客户端第一次提交修改,所以需要设置一些参数,可以设置为全局参数,也可以每次提交时都写用户和邮箱。下面我们设置全局参数。
# git config --global user.name "104"
# git config --global user.email "[email protected]"
# 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 [email protected]:platform
   fe2f251..0cf7775  master -> master
# 现在提交推送都正常了。

现在我们在windows上checkout出最新版本:

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

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

可以看到已经回到了刚刚更新的状态。命令如下:

git reset --hard HEAD^: 回到所有内容到上个版本,上上个就是:HEAD^^,上10个就是:HEAD~10

还有很多相关的命令需要慢慢去了解。

git revert HEAD: 撤销某次提交,并生成一个新的提交

命令太多。以后用到再说...

如有错误,还请指出

时间: 2024-10-25 11:28:21

Git / Gitolite 的应用学习的相关文章

Git专题--系统的学习Git之二

本文为整理自:伯乐在线 1.Git详解之一:Git起步 2.Git详解之二:Git基础 3.Git详解之三:Git分支 4.Git详解之四:服务器上的Git 5.Git详解之五:分布式Git 6.Git详解之六:Git工具 7.Git详解之七:自定义Git 8.Git详解之八:Git与其他系统 9.Git详解之九:Git内部原理 Git详解之四:服务器上的Git 服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.

Git和GitHub在线学习资源整理(转)

原文地址:http://blog.csdn.net/duqi_2009/article/details/12646711 电子书 GotGitHub Git Workflow 文章 GitHub Fundamental visual-git-guide 图形化的Git参考手册 Linux下使用git命令以及github项目 教程 Try Git Git Immersion 入门指导 Top 10 Git Tutorials for Beginners A Hacker's GIT intrucd

centos7.x+git+gitolite

一.     什么是Gitolite Gitolite is an authorization layer on top of Git, relying on sshd or httpd for authentication. Gitolite allows you to specify permissions not just by repository, but also by branch or tag names within each repository. That is, you

Git 教程 -- 基于自己学习记录

Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓库克隆到本地,这里以我自己的一个私人项目为例,克隆到本地. git clone https://github.com/weixuqin/love_source.git //克隆项目到本地 4. 创建dev 分支,并切换到dev分支. git checkout -b dev //创建dev分支 git

Git和Github入门学习

注册github账号也有些时日,但一直给自己找借口github的操作麻烦,便一直逃避不肯学习,今天,我终于不再逃避,静下心来花时间和精力学习github的基本使用操作.git和github入门学习一.下载安装安装 git for windows 这个是一个git的windows系统的命令行版本 https://git-scm.com/downloads注释:安装 git for windows 一路 next 即可二.使用github1.注册账号github官网:https://github.c

码云配合git入门命令总结学习

目录 码云配合git入门命令总结学习 基本设置 基本命令总结学习 准备工作以及基本思路 基本命令 码云搭建仓库步骤 准备前工作 具体操作方法 远程仓库基本命令 标签相关命令 所有命令总结 基本命令总结说明 远程库有关的命令说明 标签相关命令 容易混淆的命令 码云配合git入门命令总结学习 基本设置 设置用户名及email: git config --global user.name "Your Name" git config --global user.email "[em

Git for Android Studio 学习笔记

http://learngitbranching.js.org/ 一个特别好的git学习教程 创建一个project,然后导入github

centos+git+gitolite 安装和部署

本文原文链接:http://www.cnblogs.com/ponyliu/p/5383096.html 一.部署环境 系统:CentOS 6.4x64 最小化安装 IP:192.168.52.131 git默认使用SSH协议,在服务器上基本上不用怎么配置就能直接使用.但是如果面向团队服务,需要控制权限的话,还是用gitolite方便些. 首先用x-shell 工具链接centos 系统 二.安装基础依赖包 [[email protected] ~]#yum install curl-devel

Git的认识与学习

第一部分:我的git地址是https://github.com/monkeyDyang 第二部分:我对git的认识 Git是一种良好的.支持分支管理的代码管理方式,能很好地解决团队之间协作的问题.每个工程师在自己本地分支上开发,完成功能之后再将所有人的代码合并.Git是一款免费.开源的分布式版本控制工具. Github同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用.作为开源代码库以及版本控制系统,Github目前拥有140多万开发者用户.随着越来越多的