先更新下系统:
$ sudo apt-get update
然后安装以下一些软件:
$ sudo apt-get install git-core openssh-server openssh-client
git-core是git版本控制核心软件
openssh-server和openssh-client是git需要通过ssh协议来在服务器与客户端之间传输文件需要的
我这里已经是最新版本的了。
接着安装Python的setuptools和gitosis,由于gitosis的安装需要依赖于python的一些工具,所以我们需要先安装python的setuptools。
执行下面的命令:
$ sudo apt-get install python-setuptools
安装成功后,接下来准备安装Gitosis,安装Gitosis之前需要初始化一下服务器的git用户信息
$ git config --global user.name "you name"
$ git config --global user.email "******@xxx.com"
初始化服务器用户信息后,就可以安装Gitosis了,Gitosis主要是用于给用户授权
先创建一个tools目录,然后都在这个目录下操作
$ sudo mkdir tools
$ cd tools
$ sudo git clone https://github.com/res0nat0r/gitosis.git
获取Gitosis文件后,进入到文件目录下面
cd gitosis/
接着使用python命令安装目录下的setup.py的python脚本进行安装
$ sudo python setup.py install
新加用户git, 该用户将作为所有代码仓库和用户权限的管理者:
$ sudo useradd -m git
$ sudo passwd git
然后在/home目录下建立一个git仓库的存储点:
$ sudo mkdir /home/gitrepo
让除了git以外的用户对此目录无任何权限:
$ sudo chown git:git /home/gitrepo
然后把gitrepo目录权限设置成775。
sudo chmod 775 /home/gitrepo
由于Gitosis默认状态下会将仓库放在用户的repositories目录下,例如git用户的仓库地址默认在/home/git/repositories/目录下,这里我们需要创建一个链接映射。让他指向我们前面创建的专门用于存放项目的仓库目录/home/gitrepo。
(切换到git用户)
su git
(软链接目录)
sudo ln -s /home/gitrepo /home/git/repositories
提示:git不在sudoers文件中,此事将被报告。
通过编辑器来打开sudo vim /etc/sudoers,或者直接使用命令visudo来搞定这件事情。
打开sudoers后,像如下那样加上自己的帐号保存后就可以了。
然后再次执行刚刚那条命令就可以了。
然后在服务器端添加git用户为仓库管理员,并生成管理员ssh公钥(在这里我是直接使用的服务器作为管理员,使用其他服务器原理一样)
su git
cd ~
ssh-keygen -t rsa
cp /home/git/.ssh/id_rsa.pub /tmp //上面生成的公匙
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
然后用刚生成公钥id_rsa.pub来对Gitosis进行初始化,让你的管理员公钥生效(在Git服务器上进行)
出现上面的提示,就说明初始化成功。可以查看是否写入到了gitosis-admin.git里面去了
gitosis主要是通过gitosis-admin.git仓库来管理一些配置文件的,如用户权限的管理。这里我们需要对其中的一个post-update文件添加可执行的权限。
$ sudo chmod 775 /home/gitrepo/gitosis-admin.git/hooks/post-update
使用git账户在服务器上创建一个目录(fendo.git)并初始化成git项目仓库,(Git版本库统一在/home/git/repositories目录下,文件夹一定要以“.git”结尾)
su git
cd /home/gitrepo
sudo mkdir fendo.git
cd fendo.git
sudo git init --bare
exit
以上就已经成功创建了一个名为fendo.git的项目仓库了,新建的这个仓库暂时还是空的,不能被客户端clone,还需要对gitosis进行一些配置操作。
首先需要在前面生成ssh公钥(用来初始化gitosis)的机器上将gitosis-admin.git的仓库clone下来。在客户端机器上新建一个目录用于存放gitosis-admin.git仓库
cd ~
mkdir gitadmin
cd gitadmin
sudo git clone git@10.10.60.58:gitosis-admin.git
注意:
如果你在这一步出现要你输入密码
git clone git@xxx:/gitosis-admin.git
[root@XXX git-repo]# git clone git@XXX:gitosis-admin.git
Cloning into 'gitosis-admin'...
git@XXX's password:
Permission denied, please try again.
git@XXX's password:
Permission denied, please try again.
git@XXX's password:
那就是刚刚秘钥哪里没有配置好!!!!!
clone下来会有一个gitosis.conf的配置文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用于认证请求的客户端机器。
然后我在windows下通过以下命令生成ssh公钥文件
ssh-keygen -t rsa
第一次,默认,第二三次,输入密码。
该命令会在c/user/.ssh/目录下生成以下文件
然后把id_rsa.pub公钥发给管理员,管理员再把他们分别按用户名命名好,复制到keydir目录下。
注意:上面的ssh_pub目录是存在其他用户ssh公钥的一个目录。
然后编辑gitosis.conf文件
sudo vim /home/git/gitadmin/gitosis-admin/gitosis.conf
配置“fendo.git”版本库
[gitosis]
[group gitosis-admin] ####管理员组
members = git@fendo-virtual-machine ####管理员用户名,需要在keydir目录下找到相应的.pub文件,多个可用空格隔开(下同)
writable = gitosis-admin ####可写的项目仓库名,多个可用空格隔开(下同)
[group fendo] ####可写权限组
members = wind ####组用户
writable = fendo ####可写的项目仓库名
(公钥的命令一定要和公钥的名字一样,如上:后边的就是你的公钥名字,此时公钥的命名就为XXX.pub)
因为这些配置的修改只是在本地修改的,还需要推送到服务器中才能生效。
$ cd ~/gitadmin/gitosis-admin/
$ git add .
$ git commit -am "add a user permission"
$ git push origin master
推送成功会显示下面提示信息
新增的用户不能立即生效,这时候需要重新启动一下sshd服务
sudo /etc/init.d/ssh restart
服务端的git就已经安装和配置完成了。
五、客户端(windows)使用Git
确保你已经安装git客户端,然后才能执行以下命令:
$ mkdir testgit
$ cd testgit
$ git init
$ echo "this is a test text file,will push to server" > hello.txt
$ git add .
$ git commit -am "init a base version,add a first file for push to server"
$ git remote add origin git@10.10.60.58:fendo.git
$ git push origin master
上面提示错误,那是因为,我这另外一个地方也初始化过一个仓库,然后提交过。
六、客户端(windows)安装sourceTree使用Git
先去官网下载安装包: https://www.sourcetreeapp.com/
下载好之后点击安装
点击继续(这里需要翻墙,使用google或atlassian账号登录,网速慢请耐心等待验证码出现,可用lan灯或者loco。)
这里会提示你要输入账号什么的,我是没有账户的,所以这里选择Go to my atlassian.选择注册账户然后输入一些信息
点击Sign up他就会发一封邮件到你的邮箱中去,然后登陆你的邮箱,进行验证下就可以了。然后在回到那个界面选择去我的atlassian。
输入组织什么的,点击许可,然后,他就会出现一些信息。。
然后又返回到那个界面选择使用现有账户进行登录。。
点击Log in过一会就会成功。
点击继续。。
然后点击跳过初始设置。然后他会提示您
这里点击否,然后她又提示,说找不到Git
我这里是安装好了git的,如果你没有安装git的话可以选择第一种方式,我这里就选择第二种方法。然后找那git.exe所在的目录就行了,下面她又提示
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。选择不想使用就行了。因为,我们 使用的是Git 无需使用 Mercurial 这个。然后主界面马上就出来了。。
然后点击 克隆/新建 按钮,在弹出层,中选择创建新仓库
点击创建
然后提交到远程就行了。