一、前言

Git是一款免费、开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。在平时的项目开发中,我们会使用到Git来进行版本控制。

Git的功能特性:

从一般开发者的角度来看,git有以下功能:

1、从服务器上克隆数据库(包括代码和版本信息)到单机上。

2、在自己的机器上创建分支,修改代码。

3、在单机上自己创建的分支上提交代码。

4、在单机上合并分支。

5、新建一个分支,把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

6、生成补丁(patch),把补丁发送给主开发者。

7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

1、查看邮件或者通过其它方式查看一般开发者的提交状态。

2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。

3、向公共服务器提交结果,然后通知所有开发人员。

关于Git服务器的搭建过程,网上有很多的方法,本文主要是谈谈Git服务器搭建好之后,如何使用以及怎么使用的问题,比如权限设置、跨平台使用等。

PS:对于Git服务器的搭建,本文提供以下链接,以供参考。

廖雪峰的Git教程http://www.liaoxuefeng.com、ubuntu完美搭建git服务器、http://www.rosoo.net/a/201102/10956.html

二、Git服务器操作和使用指南

1、Ubuntu下安装git和使用git服务器

在终端输入sudo apt-get install git命令,安装git

以下截图及步骤均以hesonglin@master这台虚拟机操作为例

git安装完之后,在命令行输入:

Your Name 和Email随意填写,目的是用来标识git身份

新建一个文件夹如:

输入git init命令,将此文件夹初始化为一个git仓库(空仓库)

输入ssh-keygen –t rsa命令生成ssh公钥(出现停顿按回车即可)

在主文件夹目录下会生成一个.ssh文件夹(若无则按Ctrl +H使之显示)

在本虚拟机上repository目录下新建一个目录gitadmin用于存放gitosis-admin.git仓库如:

将Git服务器中gitosis-admin.git仓库clone下来(git@218.108.45.14是我建的Git服务器相应的换成你建的Git服务器即可)

Clone正确会显示如下信息

clone下来会有一个gitosis.conf的配置文件和一个keydir的目录。gitosis.conf用于配置用户的权限信息,keydir主要用户存放ssh公钥文件(一般以“用户名.pub”命名,gitosis.conf配置文件中需使用相同用户名),用于服务器认证请求的客户端机器。

将本机器上生成相应的.ssh文件夹中的id_rsa.pub公钥文件,按用户名命名为如hesonglin@master.pub,复制到keydir目录下

编辑gitosis.conf文件,设置权限

将本机用户名(如hesonglin@master)添加,并赋予权限

这些配置的修改只是在本地修改的,还需要推送到服务器中才能生效

上述的git add . 和git commit –am “add a user”是保存和提交到本地

git push origin master表示将上述修改内容推送到Git服务器

推送成功会显示下面提示信息

至此,Git服务器就有和上述配置的keydir和gitosis.conf一样的信息

如我在Git服务器中已创建好了一个teamwork.git仓库用来管理项目如下图:

那么,现在就可以在本机上从Git服务器中clone teamwork.git以及做了修改后进行推送到git服务器

首先在本机先创建一个文件夹myrepository

进入到myrepository下克隆teamwork.git

得到teamwork.git仓库如下图所示

现在在本地的teamwork.git仓库中新建readme文件,然后进行提交和推送

每当Git服务器中teamwork.git仓库有更新时,可以在本机上通过git pull命令获取最新版本的数据(注意要到teamwork目录内)

此时本机teamwork.git仓库中就有了其他开发机推送的最新版本的数据(如果其他开发机push了最新数据)。

至此,本虚拟机就可以从Git服务器进行pull和push操作了。

2、在windows上对Git服务器进行pull和push

首先下载安装windows版本的git客户端软件,下载地址:http://msysgit.github.io/

安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!(windows以chang@CHANG-PC为例)

按照Ubuntu中的方法将.ssh文件夹中的id_rsa.pub文件按用户名命名成chang@CHANG-PC.pub,复制到keydir文件夹,修改gitosis.conf文件,进行提交和推送到git服务器。

获取之前在Ubuntu中推送的内容如下图

打开相应的文件夹,里面已经有了在Ubuntu下新建的文件readme

再在windows下新建一个文件experiment.txt

在本地添加、提交,然后推送到git服务器

使用git pull命令就会获得git服务器上的最新更新(下图表示的是此时已是最新版本)

同理,这时你也可以再Ubuntu虚拟机下pull获取teamwork仓库项目的最新版本。

这样在不同开发机之间通过git实现版本控制。

如果您有什么不理解的地方欢迎留言交流,文中有您的地方,希望海涵并给予指正。如果您觉得文章对您有所帮助,您的留言和推荐将对我是莫大的鼓舞!

如需转载本文,请注明来源: http://www.cnblogs.com/changjianqiu/

项目实践中--Git服务器的搭建与使用指南(转)的更多相关文章

  1. 项目实践中--Git服务器的搭建与使用指南

    一.前言 Git是一款免费.开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.在平时的项目开发中,我们会使用到Git来进行版本控制. Git的功能特性: 从一般开发者的角度来 ...

  2. git 服务器的搭建

    文章转载地址:http://www.linuxidc.com/Linux/2015-05/117502.htm 亲测可行,已经自己搭建一个正在使用中,搭建完成后,结合着pycharm +git,就能直 ...

  3. 本地Git服务器的搭建及使用

    本地Git服务器的搭建及使用 Git本地服务器环境搭建 搭建好的本地git服务器的局域网ip是192.168.1.188,用户名是RSCSVN 教程链接:http://blog.csdn.net/cc ...

  4. 将项目初始化到git服务器

    使用的是GitLab来管理Git服务器; 步骤: 一. 先在服务器上创建一个新的项目(GitLab右上角的New project)

  5. 关于git服务器的搭建

    Git 服务器可搭建在多个系统平台上. 本篇以 Windows 和 Ubuntu 系统为例,简单介绍 Git 服务器的构建. 最后使用 eclipse 的 egit 插件和 git clone 这两种 ...

  6. Git服务器的搭建和使用

    一.GIT服务器的搭建 1. 安装Git yum -y install git 2. 创建git用户 adduser git 3. 创建证书登陆   收集所有客户端需要登录的用户的公钥,就是他们自己的 ...

  7. Vue项目实践中的功能实现与要点

    本贴记录项目实践中,各种功能的实现与技术要点,均有待改进. 路由切换的时候,显示loading动画 目前方案是: 在每个页面都手动装载一个loading组件组件的显示依赖vuex里面的一个值 , 在r ...

  8. Ubuntu中Git服务器搭建

    git服务器搭建过程 参考网上资料搭建git服务器过程记录 如下: 需求 硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到. 软件需求:git-core, gitosis, ...

  9. git服务器的搭建

    http://blog.jobbole.com/25944/ 1,概念 git服务器:就是一个仓储,一个大家都可以访问的公共仓储,大家可以从这个仓储中拉取和推送数据. 协议: 与gist服务通讯的仓储 ...

随机推荐

  1. Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

    public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * 字符串 * @return ASCII字符串 */ publ ...

  2. hdoj 1286 找新朋友 【数论之欧拉函数】

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  3. poj 3466 A Simple Problem with Integers

    题目链接:http://poj.org/problem?id=3468 http://poj.org/problem?id=3468 http://poj.org/problem?id=3468 思路 ...

  4. CSS中的!important属性用法

    关于CSS的运用技巧有很多, 今天主要探讨一下CSS中 !important 这个属性的用法.在CSS的使用中,遇到最多的问题就是不同浏览器之间的兼容问题. 由于IE并不严格执行W3C标准, 而又几乎 ...

  5. Android开发:在onTouchEvent中处理任意时间的长按事件

    Android提供了GestureDetector类来处理一些常用的手势操作,比如说 onLongPress,onFling 等.但这里不使用GestureDetector,而是直接在自定义View重 ...

  6. 解决Java compiler level does not match the version of the installed Java project facet.问题

    其实之前遇到过Java compiler level does not match the version of the installed Java project facet.这个问题,因为当时没 ...

  7. gcc中__attribute__ ((constructor(101)))做成.a库成功链接

    1.cpp:------------------------------------------------ #include int test() __attribute__ ((construct ...

  8. hdu1695(莫比乌斯)或欧拉函数+容斥

    题意:求1-b和1-d之内各选一个数组成数对.问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个能够简化成1-b/k 和1-d/k 的互质有序数对的个数 ...

  9. 积累的VC编程小技巧之视图

    1.如何得到视图指针 [问题提出]    现在你有一个多线程的Demo,你想在多线程里处理视图指针里的函数,我们给这个函数起个名字:Put();该如何实现呢?   //有两种方法可以实现你的要求:   ...

  10. oracle 之数据字典屣履造门。

     oracle 之数据字典屣履造门.(更新中)       今天是2013-06-20,哎,写这篇笔记的时候,我发现我是一个非常懒惰的人,这篇文章本该昨天就完成的,想起了钱鹤滩的<明日歌> ...