git学习

Git学习(一)git服务器的简易搭建

使用环境:docker容器模拟的3个ubuntu14.04的系统

分别模拟了3个系统:

Ubuntu_gitserver:14.04 用于git服务器的安装

Ubuntu_git1:14.04 用于模拟git客户端

Ubuntu_git2:14.04 用于模拟git客户端

这里可以忽略该docker环境,相当于用了3台虚拟机作为研究环境

该文章主要介绍小团队,基于用户的git服务器的搭建

一、Ubuntu_gitserver:14.04中安装git服务端环境

1、首先需要在Ubuntu_gitserver:14.04上安装openssh服务端,这里我们将服务端和客户端都同时安装:

sudo apt-get install openssh-server openssh-client

2、安装git环境,作为服务端的git服务器(git作为一个代码管理工具,既可以作为服务端也可以作为客户端管理本地代码仓库)

sudo apt-get install git

3、创建一个git用户

adduser git

4、进入home目录创建一个目录用于存放仓库

cd /home

mkdir git_pro

5、修改目录的所属组为git

chown git:git /home/git_pro

6、修改目录的操作权限为所有者和所属组的人为读、写、执行:

chmod -R 774 /home/git_pro

7、创建一个仓库,并初始化仓库(注意仓库必须以.git结尾,这与客户端在加入git中的项目先目录里有个.git文件是一个道理;.git实际上就是客户端的本地仓库)

mkdir project.git

cd project.git

8、初始化仓库:

git init --bare

这样就在服务端创建好了一个可以使用的git仓库了,为了能在客户端将本地仓库推送到服务端,我们确保ssh服务是开启的:

ps -A | grep ssh

如果没有开启,则执行:

/etc/init.d/ssh start

来开启服务

二、Ubuntu_git1:14.04中安装客户端git环境

1、同服务端的1 、2 、3 步

2、切换到git用户,并进入到该用户的home目录:

su git

cd ~

3、从服务端clone仓库

git clone git@server:/home/git/git_pro/project.git

这里的格式为:【git clone 用户名@服务器地址:仓库路径】

4、创建一个文件

touch readme.txt

向文件里添加内容略...

4、将该文件添加到本地git库中:

git add readme.txt

5、提交该文件:

git commit -m “first commit”

如果commit是出现了这样的提示:

*** Please tell me who you are.

Run

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

git config --global user.name "Your Name"

to set your account's default identity.

Omit --global to set the identity only in this repository.

fatal: empty ident name (for <git@bd10de490d9f.(none)>) not allowed

则按照说明,在这里我执行以下命令:

git config --global user.email "git@example.com"

git config --global user.name "git"

6、推送到远程仓库master:

git push origin master

在这里成功将本地文件推送到了远程服务,我们就可以通过正常流程上传和下拉代码了(当然可能出现ssh的其他报错,上网查询即可,比如我遇到的:The autoenticity of host can’t be established错误)

如果要添加一个用户也能clone,push,pull代码,例如我们在服务端创建一个git1的用户,把他加入到git组里,那么他也就有了权限进行代码的读写了,下面来做这样一个实验:

三、Ubuntu_git2:14.04克隆服务端的代码

1、首先服务点创建一个git2的用户,并添加到git用户组里(代码略)

2、在Ubuntu_git2:14.04这个虚拟机中也创建一个git2的用户,并切换到该用户进入用户主目录

adduser git2

su git2

cd ~

3从服务端克隆该git_pro项目:

git clone git2@server:/home/git/git_pro/project.git

这里的格式为:【git clone 用户名@服务器地址:仓库路径】

注意:两个客户端再pull代码的时候指明分支,否则可能会出错:

There is no tracking information for the current branch.

Please specify which branch you want to merge with.

See git-pull(1) for details

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> master

使用这个即可:

git pull origin master

这样就成功克隆下来了项目,接下来我们就可以编辑文件提交上传,并下拉代码了。到此整个环境搭建完成,如果有新用户加入,那么就在服务端创建一个用户,并将它加入到git用户组即可,这样就可以在客户端通过ssh下拉、上传代码了。

但是团队人数增加之后,就比较麻烦,在后面的文章,我将会介绍,服务端只创建一个git用户,所有的用户都通过这一个git用户来下拉上传代码,这里将会用到ssh-key的方法(创建ssh-key:ssh-keygen -t rsa),后面的文章再介绍。

 

Git学习(二)git服务器的简易搭建

首先git服务器的搭建参见:http://blog.csdn.net/lyhdream/article/details/49561645

在上一篇文章我们介绍了,通过创建用户来为开发者提供一个可以使用正常使用git服务器的权限。

但是,通过这样的方式,每增加一位开发者我们就会创建一个用户并把它加入到能够对该仓库进行正常操作的用户组。

当一个团队里的开发者一多,就显得比较麻烦。

这篇文章主要介绍,通过一个git用户,多个开发者通过上传自己的公钥到服务器的authorized_keys文件里,大家就可以通过一个用户来进行正常的代码推送。

 

git服务器的搭建参见“Git学习(一)git服务器的简易搭建”这篇文章的第一小节

我们在git服务器上,切换到git用户,并进入git用户的主目录,创建一个 .ssh目录

[plain] view plain copy print?

  1. mkdir .ssh

进入.ssh目录:

[plain] view plain copy print?

  1. cd .ssh

为该用户创建一个公钥和私钥:

[html] view plain copy print?

  1. ssh-keygen -t rsa //以rsa的加密方式生成秘钥对

在.ssh目录里创建一个authorized_keys文件,用于存放用户的公钥

[html] view plain copy print?

  1. touch authorized_keys

将 .ssh目录里生成的公钥复制到 authorized_keys 文件里

这样,服务端就已经具备了通过公钥来为用户提供推送代码的权限了。

 

假设现在有一个开发者(用户名为lyh1),想要对该仓库具有推送代码的权限,那么他就可以在自己电脑上,通过lyh1这个用户生成相应的公钥和私钥,吧公钥复制到服务端.ssh/authorized_keys文件里(另起一行),就可以了。

首先进入lyh1用户的用户主目录:

[html] view plain copy print?

  1. cd ~

创建.ssh目录:

[plain] view plain copy print?

  1. mkdir .ssh

进入.ssh目录,并生成公钥和私钥:

[plain] view plain copy print?

  1. cd .ssh
  2. ssh-keygen

将xxx_pub.rsa文件里的公钥字符串复制到服务端的authorized_keys文件,那么该用户就可以通过服务端的git用户来推送代码了

(注意:如果此时通过公钥访问还是需要输入密码,重新使用ssh-keygen生成秘钥对,文件名改为id_rsa.pub以及id_rsa即可;具体需要查看/etc/ssh/ssh_config 配置文件里的要求,参见:http://www.cnblogs.com/liyuanhong/articles/6791608.html

到此,通过用户公钥的方法来配置git服务器的方法完成,下一篇文章将会介绍大规模团队下,使用Gitosis 来管理用户的authorized_keys

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值