ubuntu 上git版本管理库搭建攻略

GIT版本控制系统

 

第一部分 基本概念

版本库:本地库、公共库

每个开发人员在本地都有自己的版本库,在服务器上有一个公共的版本库。所有的历史记录都存储在本地库中。向版本库提交代码无须连接远程版本库而是记录在本地库中。

版本库中存储什么:和项目相关的所有文件。

工作目录树:又称版本库的“断面视图”,就是项目的整个目录结构。工作目录树创建方法有两个,第一个用Git相关命令初始化版本库生成“.git”目录,于是“.git”的父目录就是工作目录树;第二个方法克隆一个已经存在的版本库(就是拷贝),随之也创建了相应的工作目录树。

代码修改与文件同步:push、pull

Push是一个修改-确认-提交的过程,把自己修改的提交到本地库和公共库,通过这个动作可以让项目组中其他人员看到、获得你做的修改;

Pull是一个取来-合并的过程,方便工作人员从公共库中取来项目中其他人员改动的部分到本地库中并和自己的合并在一起。

标签:版本管理的一个手段,可以理解为具体的版本号。

分支:项目开发中,遇到某些模块需要特别开发或者重写等情况,可以在版本库中创建分支,并行开发。分支的生命周期可以是长期也可能很短。

分支合并:所以的分支、主线都是围绕着项目服务,最终都是向着一个终点目标,这就会发生合并。Git能够自动合并,不能合并时会提示冲突

 

第二部分 Git服务器安装与设置

1先检查本机是否安装python,在终端输入

:python --version


,能显示处python版本即安装。

2安装 openssh服务器:

sudo apt-get install openssh-server openssh-client


3安装 git服务器 :

sudo apt-get install git-core

4配置 git服务器,创建git服务器管理用户 :

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


 

初始化全局设置 (设定用户名和邮箱):

git config --global user.name"myname"
git config --global user.email"myname@server"

 

 

5管理员在个人计算机上创建个人公钥和私钥 ,在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥:

ssh-keygen -t rsa

 

默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:

id_rsa  id_rsa.pub known_hosts   把id_rsa.pub拷贝到服务器上初始化gitosis用

 

6安装python的setuptool:

sudo apt-get install python-setuptools

7下载并安装gitosis :选定目录为src

cd /src
git clone git://eagain.net/gitosis.git
cd gitosis
sudo python setup.py install


8初始化gitosis 并让他运行起来  此处用来配置超级管理员

cp ~/***/id_rsa.pub /src/id_rsa.pub
sudo -H -u gitgitosis-init < /src/id_rsa.pub


9修改post-update权限:

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

 

10.管理员在自己的机器上clone gitosis管理平台

   

 git clone git@192.168.17.109:gitosis-admin.git
Initializedempty Git repository in /usr/local/work/gitosis-admin/.git/
remote:Counting objects: 5, done.
remote:Compressing objects: 100% (4/4), done.
remote:Total 5 (delta 0), reused 5 (delta 0)
Receivingobjects: 100% (5/5), done.

11安装完成,在管理员PC上进入上一步clone形成的gitosis-admin目录修改gitosis用户权限,添加用户的公密到keydir,修改完后commit、push到服务器即可完成仓库权限的相关操作

 

 

第三部分 Git客户端安装

Linux中安装git

sudo apt-get install git-core git-docgit-gui git-svn git-cvs gitweb git-daemon-run git-email git-arch gitk


git安装包说明:

git-core 、git-doc包是git的核心程序,它只包括最小的依赖关系,如果只安装git包的话,那么一些git的外围扩展将无法使用。

git-gui包是一个基于Tk的git程序,是带有GUI的,可以用鼠标点击操作的git。

git-svn包用于支持从svn仓库导入到git仓库

git-cvs包用于支持从cvs仓库导入到git仓库。

gitweb包则是一个成熟的基于web的用于git仓库管理的web程序

git-daemon-run包用于支持用户使用git://形式的命令来访问git仓库。

git-email包支持使用git发送邮件。

git-arch包是为了兼容arch仓库的。大家或许听说过linux的发行版本arch,但现在说的arch和这个发行版本似乎没有必然关系。git-arch中的arch是gnu arch,它是一个类似于cvs、sccs、svn的版本控制系统。git-arch包用于支持从gnu arch仓库导入到git仓库。

gitk包是一个带有Tcl/Tk GUI的可以用来浏览git仓库历史信息的桌面程序。

  检测安装是否成功:

在终端输入git

测试下是否成功安装 git,出行如下表示提示成功

usage: git [--version] [--exec-path[=GIT_EXEC_PATH]][--html-path]
          [-p|--paginate|--no-pager] [--no-replace-objects]
           [--bare][--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
          [--help] COMMAND [ARGS]
 
The most commonly used git commands are:
   add        Addfile contents to the index
   bisect     Find by binary searchthe change that introduced a bug
   branch     List, create, ordelete branches
   checkout   Checkout a branch or paths to theworking tree
   clone      Clone arepository into a new directory
   commit     Record changes to therepository
   diff& nbsp;      Show changesbetween commits, commit and working tree, etc
   fetch      Downloadobjects and refs from another repository
   grep       Printlines matching a pattern
   init       Create anempty git repository or reinitialize an existing one
   log       Show commit logs
   merge      Join two ormore development histories together
   mv        Move or rename a file, a directory, or a symlink
   pull       Fetchfrom and merge with another repository or a local branch
   push       Updateremote refs along with associated objects
   rebase     Forward-port loca lcommits to the updated upstream head
   reset      Reset currentHEAD to the specified state
   rm        Remove files from the working tree and from the index
   show       Showvarious types of objects
   status     Show the working treestatus
   tag       Create, list, delete or verify a tag object signed with GPG
See 'git help COMMAND' for more information on a specificcommand.


 

Windows中安装git

Windows中安装git:通过linux仿真器Cygwin安装和运行git

 

Git安装成功后设置

主要设置name和email两个全局变量。name用来说明版本历史上的修改是谁提交的,email用来联系修改者。

在终端上输入 如下进行配置:

git config --global user.name “XXXX”

git config --global user.email XXXX@XXXX.com

用下面的命令检查上述设置是否成功:

git config --global --list

user.name = XXXX

user.email = XXXX@XXXX.com

 

使用不同的颜色显示不同类型的内容

git config --global color.ui “auto”

取消颜色

git config --global color.ui “false”

 

 

第四部分 Git项目简单应用

GIT系统管理员部分:

1.管理员在自己的机器上clonegitosis管理平台

git clone git@192.168.xx.xx:gitosis-admin.git
Initialized empty Git repository in /usr/local/gitmanage/gitosis-admin/.git/
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.

Initialized empty Git repository in /usr/local/gitmanage/gitosis-admin/.git/

remote: Counting objects: 5, done.

remote: Compressing objects: 100% (4/4), done.

remote: Total 5 (delta 0), reused 5 (delta 0)

Receiving objects: 100% (5/5), done.

出现上面的信息说明管理员成功的把管理平台clone到自己的PC机上。在gitmanage目录下会产生gitosis-admin目录

在这个目录下有gitosis.conf 配置文件和 keydir目录。修改gitosis.conf管理gitosis用户权限,keydir保存用户的公钥(一个pub文件)。修改完成后commit、push到服务器即完成系统管理员的相关操作,操作过程如下:

 

首次打开gitosis.conf文件如下所示

   groupgitosis-admin  表示系统管理组;

   writable 表示权限类别

   members 表示管理组的成员

 

 

 

 

 

 

接下来管理员配置用户及项目,如下所示:

这个过程中往系统中添加了用户lds(以添加卢德山为例,lds为他pc机用户名),并给他赋了相关项目的权限。上面配置了textproj和uboot两个工程,writable表示读写权限,readonly表示只读权限。

如何向系统添加:用户在自己的PC机终端上执行ssh-keygen -t rsa 命令,生成id_rsa.pub把其重命名为lds交给系统管理员,系统管理员拷贝到gitosis-admin目录下的keydir目录即可,之后执行如下命令把这些配置提交到服务器:

   git add .
   git commit –am “addmembers and project”
   git push


 

项目管理者,提交项目及管理过程

注:在新项目提交之前一定要先在gitosis.conf文件中配置这个项目,如下面要提交的textproj项目,提交之前在gitosis.conf已经配置好,如上图所示。

 

1.新建项目textproj及提交,过程如下:

mkdir textproj
cd textproj
git init
touch hello.txt
git add hello.txt   或者  git add .
git commit -am 'first commit'
git remote add origin git@192.168.xx.xx:textproj.git
git push origin master


2.提交现有的项目,和上面的稍微有一点区别。直接进入到要提交的项目目录,执行如下命令:

cd 项目目录
git init
git add .
git commit -am “注释说明”
git remote add origin git@192.168.xx.xx:项目目录名.git
git push origin master


3.更新现有的项目,过程如下:

cd 项目目录

git pull

 

普通开发人员使用方法

1首先从服务器上clone版本库,以上面的textproj为例,在终端执行如下:

 git clonegit@192.168.17.109:git-testproj.git

成功后产生textproj工程目录,进入到目录下即可开始开发工作。

2.开发人员提交自己的工作,还是以上面的textproj为例,在终端执行如下:

假设开发人员对工程中的hello.txt进行了修改

git addhello.txe   (或者git add .)

gitcommit –am“注释说明”

git push

3.更新现有的项目,过程如下:

 cd 项目目录

git pull

 

 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值