Git 服务器在Ubuntu 12.04上的搭建与使用体验

2024-09-05 08:38

本文主要是介绍Git 服务器在Ubuntu 12.04上的搭建与使用体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Git使用入门教程:http://www.linuxidc.com/Linux/2015-03/114576.htm

GitHub 教程系列文章: 

GitHub 使用教程图文详解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 服务器搭建与客户端安装  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享实用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm 

Git 的详细介绍:请点这里
Git 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-03/114576.htm


Fedora通过Http Proxy下载Githttp://www.linuxidc.com/Linux/2009-12/23170.htm

在Ubuntu Server上安装Githttp://www.linuxidc.com/Linux/2009-06/20421.htm

服务器端Git仓库的创建(Ubuntu) http://www.linuxidc.com/Linux/2011-02/32542.htm

Linux下Git简单使用教程(以Android为例)http://www.linuxidc.com/Linux/2010-11/29883.htm

Git权威指南 PDF高清中文版 http://www.linuxidc.com/Linux/2013-10/91053.htm

准备工作:

1    一台服务器Server, 一台客户端Client,两台机器安装的都是Ubuntu12.04  LTS版本。

2  Server 和Client执行命令安装Git工具:  apt-get install git git-core  ,记得要使用root用户权限.

3  Server 端需要安装 openssh-server:  apt-get install openssh-server

查看:ssh server是否启动:

ps -e | grep ssh

          849 ?        00:00:00 sshd

          1711 ?        00:00:00 ssh-agent

本人客户机使用了putty工具,远程操作服务器,且使用了scp命令在两台Linux机器之间直接拷贝文件,所以open-ssh服务是必须的。

安装前须知:

Gitosis 简介.

gitosis主要用来Git仓库的权限管理,默认情况下git也是有权限管理的,但是不太好用,或者用起来比较复杂,所以选择了gitosis第三方的权限      管理工具。使用Gitosis可以在GIt上面管理访问仓库的用户权限,允许某些用户访问指定的仓库,对指定的仓库拥有读写控制,gitosis 是基 于git的管理方式,服务器安装好gitosis以后,超级管理员的客户端PC就 "git  clone  gitosis" 到本地,以后的工作,比如新仓库创建,权限管理都是在 超级管理 员的PC上进的,超级管理员的PC修改gitosis的配置后,需要把修改项提交到服务器端,这样其他的用户才有权限从服务器获取到源码进行Git管理,需要注意的是新仓库的创建,权限的管理务必不要直接在Git服务器上面进行修改,超级管理员的PC才具有这些功能。

下图是Server端安装好的Gitosis图片:

下图是客户端PC执行命令把gitosis下载到本地后的图片,如何下载后面会详细说明.

上图中的其他文件夹是自己创建的git仓库,如何创建仓库 后续会有说明.

Git使用注意事项:

这里再次说明一下,如果新增加一个客户访问仓库权限,或者超级管理员新增加一个仓库,都需要在Client的机器上进行,然后再使用Git命令上传到服务器端,切不可在git服务器上面直接新增加用户或者创建仓库,笔者在这个事情上面花费的时间比较长,另外需要说明的是如果不想要某个仓库了,  可以在服务器上直接使用rm 命令删除掉,Client机器上也删除掉即可,其他的不需要改动,对了,一个仓库里面只有最顶层目录下面有.git文件夹,且只有一个.git隐藏文件夹,这个是跟SVN版本管理工具不同的地方,svn会在每个文件夹下面都有.svn隐藏文件,如果你在项目里面搜索到有多个.git隐藏文件夹很可以是项目以前采用了.git管理,如果是这样的话需要注意了,超级管理员在创建仓库前一定要删除掉项目中所有的.git隐藏文件夹,如果含有.svn文件夹也需要删除掉,笔者在Android源码中发现了大量的.git文件夹,在上传到Git服务器的时候一直不成功,或者丢失了文件,删除源代码中的.git文件夹后,再创建仓库,然后上传到中心服务器就OK了。

Gitweb的使用:

另外需要说明的是还有一种通过浏览器查看git仓库的方式,这种方式被称为gitweb, 这种方式是图形界面的,对网内的所有用户开放,也就是说局域网内所有人都可以浏览到仓库代码,可以下载代码,但是不可以在线修改代码,Linux的官方网站采用了gitweb方式,方便研发人员浏览代码。下图是笔者的PC通过gitweb 访问项目组内部GIt服务器的效果:

Git服务器IP:192.168.1.8  端口默认:1234

可以看到我的GIt服务器上面有四个仓库,包含gitosis-admin在内,点击 ok335x-source-pub仓库可以看到我的代码修改记录:

单击右边的commit可以知道这次提交改动了哪些文件,commitdff可以看到本次修改与修改前的代码差异, tree可以在线阅读代码,snapshot是代码快照,通过它可以下载到某次提交时的代码,可以做到代码回溯,是不是很方便呢..

下一篇文章会讲解GIt服务器的具体搭建步骤,Gitweb的安装方法. 见 http://www.linuxidc.com/Linux/2014-04/100148p2.htm


前一篇文章已经对Git使用有了一个概括性认识(见 http://www.linuxidc.com/Linux/2014-04/100148.htm
),下面我们将开始具体搭建Git服务,和如何创建仓库.

说明:需要两台Ubuntu电脑l:  电脑A 作为Server端, IP地址:192.168.1.8  ,电脑B  Client端作为超级管理员.

1 安装git,git-core (A和B电脑都需要安装)

sudo apt-get install git 
sudo apt-get install git-core 

2 下载gitosis (Server端安装,gitosis是用来迅速搭建git server的软件包,详细的介绍可以访问https://github.com/res0nat0r/gitosis)
 
可以在~下新建目录叫src

mkdir src 
cd ~/src 
git clone https://github.com/res0nat0r/gitosis.git

注意:github中和其他网站转载的文章用到的 git clone git://eagain.net/gitosis无法访问!

3 安装gitosis (Server端安装)

cd ~/src/gitosis 
sudo python setup.py install 

注意:如果报错:ImportError:No module named Setuptools 说明python的安装包缺少setuptools包。
 
解决方法1:

sudo apt-get install python-setuptools 

解决方法2:
 
(1)安装python的安装工具pip

sudo apt-get install python-pip 

(2) 安装setuptools

sudo pip install setuptools 

有时候会碰到权限受限的错误,此时最好用root执行安装。

4 新建特殊用户git (Server端执行)

这个用户主要是用来管理git的仓库,名字默认为“git”,也可以用别的名字。但是最好不要用已经存在的用户名。

sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git

如果成功执行,则会提示

Adding system user 'git' (UID 114) ...

Adding new group 'git' (GID 123) ...

Adding new user 'git' (UID 114) with group 'git' ...

Creating home directory '/home/git' ...

5 产生ssh key (电脑Client端执行)

因为gitosis主要通过ssh来实现用户访问,所以需要SSH key。

在电脑B上产生key只需要执行

ssh-keygen -t rsa 

公共key会在$HOME/.ssh/id_rsa.pub

6 复制ssh 公共key到Server上

建议放到tmp目录下,这样可以避免权限限制带来的问题。

具体方法很多,这里不再复述。

例如,直接拷贝

scp ~/.ssh/id_rsa.pub git@computerA:/tmp 

7 电脑A:初始化git server

(1)导入pub key并且初始化gitosis

假设pub key在tmp目录中为id_rsa.pub

sudo -H -u git gitosis-init < /tmp/id_rsa.pub 

会看到两行输出:

initilailized empty Git repository in /home/git/repositories/gitosis-admin.git/

Reinitillized existing Git repository in /home/git/repositories/gitossi-admin.git/

这个步骤是给超级管理员的电脑授权,授权以后电脑B可以使用git clone命令下载gitosis-admin仓库,这个命令只需要在给超级管理员权限时使用,在增加其他的用户管理权限时,不需要这样做,如何新增加一个用户的Git访问权限看步骤9.

(2) 修改一个文件的访问权限

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

8 电脑B:同步gitosis-admin到B电脑开始管理git server

git clone git@computA:gitosis-admin.git 

这样会在当前目录下fork一个gitosis-admin的目录。里面有一个配置文件gitosisi.conf和一个存放pub key的目录keydir。

注意:有时会碰到如下错误

ssh: connect to host 192.168.0.12 port 22: Connection refused

 fatal: The remote end hung up unexpectedly

说明电脑A可能没有安装SSH server

sudo apt-get install openssh-server 

9 建立新的库和授权用户

如果要新建库,编辑gitosisi.conf文件,添加

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = user1@pc1 user2@pc2

<span style="color: rgb(102, 51, 102);">[group project-a]
writable = project-a
members = user1@pc2 user2@pc2</span>

注意1 :

如果新增加一个用户,需要在新用户的虚拟机里面执行 ssh-keygen -t rsa 命令,一路回车即可,把新生成的id_rsa.pub文件放到超级管理员的PC gitosis-admin->keydir 目录下,且把文件名字修改为新用户Ubuntu机器的名字,其实打开id_rsa.pub文件,文件的结尾含有机器的PC名字,把名字复制一下就行,注意文件名中含有 .pub 名字. 另外注意修改gitosis.conf文件,把机器名添加进入,如上图所示,另外新建一个仓库也需要添加到gitosis.conf文件,上图中project-a就是新仓库名字.

如果项目组有多个成员,这就要求每个成员的Ubuntu机器名字不能一样,修改每个用户的机器名字,让他们不同,建议每个机器的机器名字含有自己的ID信息,以后查看代码提交日志的时候,信息会含有提交者机器的名字,这样便知道是哪位同事提交的代码.

注意2:

将改动的conf文件和新的key在超级管理员的PC上面执行git add -> git commit -> git push命令上传到git server即可,这时其他的项目成员就可以git clone仓库,进行Git管理了.

下图是笔者机器上项目组成员的key:

10 上传文件到库

这里有两个场景:

(1)全新的项目

(2)已有的git仓库恢复

过程差不多,但是对已有的git仓库而言,有几个问题需要注意。

比如有项目的文件夹为project-a

a.进入项目文件夹

cd project-a

b.初始化git本地仓库,添加到git管理

git init
git add .
git commit  -a  -m "add new project"

c.建立本地与服务器关联

git remote add origin git@YOUR_GIT_SERVER_HOSTNAME:project-a.git 

d.提交本地代码

git push origin master:refs/heads/master 

注意:这条命令在超级管理员的机器上面运行,将在服务器上面新创建一个仓库。

至此新的库和对应文件已经上传到server端,其他用户可以

git clone git@YOUR_GIT_SERVER_HOSTNAME:project-a.git 

获得项目文件。
对于已有的git仓库恢复,指的是server端电脑A出问题,系统重做后,如何把电脑B的内容提交到电脑A,从而复原git server。
 
其实步骤都和上面一样,只是如果执行到10的d步骤时,会提示rsa的key不匹配,这里只需要将电脑B ~/.ssh/known_hosts文件里对应的旧rsa key删除即可。
 
比如以前的服务器的IP为192.168.0.12,你会在known_hosts文件里看到,如下

...
113.116.44.123 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/h79FdQwU2xG7cWncZEzI5gxK1l6p3aoTwneW9snRyTQmAT3OQV5wPiiYrj/W9HyVi7sX0BeaBlGb71ipViOXMrflva3KbCBTx8KZ6vawaSxtIhRaWd+Xzd5Kg3A69IYpLHW/0BTMVh3B53zBbxb9QzFVwfqb3AITEQxd/z6wdxLyTfmxz5CCARUaAi8F7LZ8Q5zNyyAlY5oG92i0/eJ0RmqgyNpno/ZxfoBxkAFAyUtLRbBdsj1eoGynJS9IzqjyW7WTol6aWwmBemn6gZO6FecLgIKSiG4+TYebvTZqC3aBcNxrKTmFqvu80Qv1beZ6kVWjbBOmDBhOdz2Max37
113.118.228.88 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/h79FdQwU2xG7cWncZEzI5gxK1l6p3aoTwneW9snRyTQmAT3OQV5wPiiYrj/W9HyVi7sX0BeaBlGb71ipViOXMrflva3KbCBTx8KZ6vawaSxtIhRaWd+Xzd5Kg3A69IYpLHW/0BTMVh3B53zBbxb9QzFVwfqb3AITEQxd/z6wdxLyTfmxz5CCARUaAi8F7LZ8Q5zNyyAlY5oG92i0/eJ0RmqgyNpno/ZxfoBxkAFAyUtLRbBdsj1eoGynJS9IzqjyW7WTol6aWwmBemn6gZO6FecLgIKSiG4+TYebvTZqC3aBcNxrKTmFqvu80Qv1beZ6kVWjbBOmDBhOdz2Max37
<del>192.168.0.12 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs3guvL3wffuMXmEnghFIFzU9leD+n/U1K+U7IOBesHFtTJ0EEpDnusNwaXq/fqtHsA8FMVk7VyI5IzptCq57/Yi1Cpyrv1zUUC2YPSlMl6qMoPiP1QYMAQBPkiAmq6KJIRu14xpZQDu+hHH1b0g7R/Y0ZGaNGzdcsq5UEdMTzyLZZn+6BamzbsF71oLuEwMlI3vhe/wsn8XfuZbRQhae3lt3frhM79JqUcGoGN2FYOeqv3PpyW7k8uIsCAe2HhxprLbLwVOWh0l4gwR0lt8yOrUEoVnmZfOpwCfBpFTg1Wq2UDBddFdm/01P7eJM8millqo6AIATr7sYzDsIAYiql</del>
...

将对应的key删除,保存退出。再执行push即可恢复。

11  安装GitWeb

如果想在本地版本库看看自己项目的效果,不妨用Git 自带的一个命令,可以使用类似lighttpd这样轻量级的web服务器启动一个临时进程。如果是在Linux 主机上,通常都预装了lighttpd (可到http://www.lighttpd.net下载源码进行安装),无须任何配置,可以git工作区中键入以下命令来启动。

$ git instaweb

这会在1234端口开启一个HTTPD 服务,随之在浏览器中显示该页,十分简单。关闭服务时,只需在原来的命令后面加上--stop 选项就可以了:

$ git instaweb –stop

至此完成了git server的搭建,或者恢复工作。

Git 的详细介绍:请点这里
Git 的下载地址:请点这里

linux

文章摘自:http://www.linuxidc.com/Linux/2014-04/100148.htm

这篇关于Git 服务器在Ubuntu 12.04上的搭建与使用体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138463

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的