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),后面的文章再介绍。