GIT(分布式版本控制系统)

  Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
 
  Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。  Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
 
  Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如 很多 Freedesktop 的项目迁移到了 Git 上。
 
  
  分布式版本控制系统最大的特点是不需要每次提交都把文件推送到版本控制服务器,而是采用分布式版本库的机制,使得每个开发人员都够从服务器中克隆一份完整的版本库到自己计算机本地,不必再完全依赖于版本控制服务器,使得源代码的发布和合并更加方便,并且因为数据都在自己本地,不仅效率提高了,而且即便我们离开了网络依然可以执行提交文件、查看历史版本记录、创建分支等等操作,真的是开发者的福音啊。
 
  Git不仅是一款开源的分布式版本控制系统,而且有其独特的功能特性,例如大多数的分布式版本控制系统只会记录每次文件的变化,说白了就是只会关心文件的内容变化差异,而Git则是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快照,而非仅记录差异内容,并且使用SHA-1加密算法保证数据的完整性。
 
  

使用Git服务程序

在正式使用前,我们还需要弄清楚Git的三种重要模式,分别是已提交、已修改和已暂存:

已提交(committed):表示数据文件已经顺利提交到Git数据库中。

已修改(modified):表示数据文件已经被修改,但未被保存到Git数据库中。

已暂存(staged):表示数据文件已经被修改,并会在下次提交时提交到Git数据库中。

提交前的数据文件可能会被随意修改或丢失,但只要把文件快照顺利提交到Git数据库中,那就可以完全放心了,流程为:

1.在工作目录中修改数据文件。

2.将文件的快照放入暂存区域。

3.将暂存区域的文件快照提交到Git仓库中。

部署Git服务器
 
  1.   主机名称    操作系统     IP地址
  2.   GIT服务器   Centos     192.168.126.137
  3.   GIT客户端   Centos     192.168.126.138
 
 
  首先我们在Git服务器和客户端上安装Git服务程序
 

  1. [root@accommate ~]# yum install -y git
  2. Loaded plugins: langpacks, product-id, subscription-manager
  3. ………………省略部分安装过程………………
  4. Installing:
  5. git x86_64 1.8.3.1-4.el7 rhel7 4.3 M
  6. Installing for dependencies:
  7. perl-Error noarch 1:0.17020-2.el7 rhel7 32 k
  8. perl-Git noarch 1.8.3.1-4.el7 rhel7 52 k
  9. perl-TermReadKey x86_64 2.30-20.el7 rhel7 31 k
  10. ………………省略部分安装过程………………
  11. Complete!
  12.  
  13. 然后创建Git版本仓库,一般规范的方式要以.git为后缀:
  1. [root@accommate ~]# mkdir accommate.git

 修改Git版本仓库的所有者与所有组:

  1. [root@accommate ~]# chown -Rf git:git accommate.git/

 初始化Git版本仓库:

  1. [root@accommate ~]# cd accommate.git/
  2. [root@accommate accommate.git]# git --bare init
  3. Initialized empty Git repository in /root/accommate.git/

  其实此时你的Git服务器就已经部署好了,但用户还不能向你推送数据,也不能克隆你的Git版本仓库,因为我们要在服务器上开放至少一种支持Git的协议,比如HTTP/HTTPS/SSH等,现在用的最多的就是HTTPS和SSH,我们切换至Git客户机来生成SSH密钥:

  1. [root@localhost /]# ssh-keygen
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/root/.ssh/id_rsa):
  4. Created directory '/root/.ssh'.
  5. Enter passphrase (empty for no passphrase):
  6. Enter same passphrase again:
  7. Your identification has been saved in /root/.ssh/id_rsa.
  8. Your public key has been saved in /root/.ssh/id_rsa.pub.
  9. The key fingerprint is:
  10. b0::b6:::ad:a3:f0::a8:b6:f4:e5:d8:: root@localhost.localdomain
  11. The key's randomart image is:
  12. +--[ RSA ]----+
  13. | |
  14. | |
  15. | o o |
  16. | . = = . |
  17. | . S + |
  18. | . o |
  19. | .. o=.Eo |
  20. |.o. ===. . |
  21. |o..o oo |
  22. +-----------------+

 将客户机的公钥传递给Git服务器:

  1. [root@localhost /]# ssh-copy-id 192.168.126.137
  2. The authenticity of host '192.168.126.137 (192.168.126.137)' can't be established.
  3. ECDSA key fingerprint is 0a::0f::fb:0e::f7::9b::::b7::.
  4. Are you sure you want to continue connecting (yes/no)? yes
  5. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
  6. /usr/bin/ssh-copy-id: INFO: key(s) remain to be installed -- if you are prompted now it is to install the new keys
  7. root@192.168.126.137's password:
  8.  
  9. Number of key(s) added:
  10.  
  11. Now try logging into the machine, with: "ssh '192.168.126.137'"
  12. and check to make sure that only the key(s) you wanted were added.

 此时就已经可以从Git服务器中克隆版本仓库了(此时目录内没有文件是正常的):

  1. [root@localhost /]# git clone root@192.168.126.137:/accommate.git
  2. Cloning into 'accommate'...
  3. warning: You appear to have cloned an empty repository.

 向Git版本仓库提交一个新文件:

  1. [root@localhost accommate]# echo "I successfully cloned the Git repository" > readme.txt
  2. [root@localhost accommate]# git add readme.txt
  3. [root@localhost accommate]# git status
  4. # On branch master
  5. #
  6. # Initial commit
  7. #
  8. # Changes to be committed:
  9. # (use "git rm --cached <file>..." to unstage)
  10. #
  11. # new file: readme.txt
  12. #
  13. [root@localhost accommate]# git commit -m "Clone the Git repository"
  14. [master (root-commit) 1709f48] Clone the Git repository
  15. file changed, insertion(+)
  16. create mode readme.txt
  17. [root@localhost accommate]# git status
  18. # On branch master
  19. nothing to commit, working directory clean

 但是这次的操作还是只将文件提交到了本地的Git版本仓库,并没有推送到远程Git服务器,所以我们来定义下远程的Git服务器吧:

  1. [root@localhost accommate]# git remote add server root@192.168.126.137:/accommate.git

 将文件提交到远程Git服务器吧:

  1. [root@localhost accommate]# git push -u server master
  2. Counting objects: , done.
  3. Writing objects: % (/), bytes | bytes/s, done.
  4. Total (delta ), reused (delta )
  5. To root@192.168.126.137:/accommate.git
  6. * [new branch] master -> master
  7. Branch master set up to track remote branch master from server.

 为了验证真的是推送到了远程的Git服务,你可以换个目录再克隆一份版本仓库(虽然在工作中毫无意义):

  1. [root@localhost accommate]# cd ../Desktop
  2. [root@localhost accommate Desktop]# git clone root@192.168.10.10:/root/accommate.git
  3. Cloning into 'accommate'...
  4. remote: Counting objects: , done.
  5. remote: Total (delta ), reused (delta )
  6. Receiving objects: % (/), done.
  7. [root@linuxprobe Desktop]# cd accommate/
  8. [root@linuxprobe linuxprobe]# cat readme.txt
  9. I successfully cloned the Git repository
  1.  

使用Git分布式版本控制系统的更多相关文章

  1. GIT分布式版本控制系统

    Git诞生历史 我想大家还记得Linus torvalds在1991年时发布了Linux操作系统吧,从那以后Linux系统变不断发展壮大,因为Linux系统开源的特性,所以一直接受着来自全球Linux ...

  2. Git ——分布式版本控制系统

    Git ——分布式版本控制系统 本人git主页地址:https://github.com/lendoon/test.git git使用心得:初次接触git在课堂上,老师给我们提供了一个代码托管的场所, ...

  3. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  4. 手把手教你玩转Git分布式版本控制系统!

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 1 Git诞生历 ...

  5. g4e基础篇#2 Git分布式版本控制系统的优势

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...

  6. GIT 分布式版本控制系统的简单使用介绍

    GIT 分布式版本控制系统的简单使用介绍 1.GIT的概念Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 与 SVN 区别:1. GIT不仅仅是个版本控制系统,它 ...

  7. 《Linux就该这么学》自学笔记_ch21_使用Git分布式版本控制系统

    <Linux就该这么学>自学笔记_ch21_使用Git分布式版本控制系统 文章主要内容: 分布式版本控制系统 使用Git服务程序 提交数据 移除数据 移动数据 历史记录 还原数据 管理标签 ...

  8. 开发效率优化之Git分布式版本控制系统(一)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将先从Git分布式版本控制系统来阐述开发效率优化 一,企业 ...

  9. Git分布式版本控制系统(下)

    Git分布式版本控制系统(下) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

  10. Git分布式版本控制系统(上)

    Git分布式版本控制系统(上) 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方便 ...

随机推荐

  1. ios自动生成对象类,提高开发速率

    #import "autoGenerationFileUtility.h" @implementation autoGenerationFileUtility - (void)cr ...

  2. 利用easyUI的combobox打造自己主动提示组件

    自己主动提示是时下一个非常流行的功能,比方说百度.谷歌的搜索输入框都使用到了这么一个功能. 因为easyUI的combobox设计师已经考虑到了这个功能.所以仅仅需简单几步我们能够轻松打造自己的自己主 ...

  3. android支付

    这里不讲具体的某个平台的支付使用,在工作中,公司使用到了ping++支付,使用它的好处是可以不用关心某个平台的支付了,例如:微信支付.支付宝支付等,太多的平台有个整合,是一个很好的事情,当然这也减轻了 ...

  4. JAVA变量存储

    1.java变量存储域 java变量的存储区域主要放在以下几个地方: (1)寄存器:可以说是最快的存储区,在C/C++中可以声明寄存器变量,但是在java中不能声明寄存器变量,只是编译器在编译时确定. ...

  5. log4j 路径环境变量配置和log4j加载配置

    1.lo4j日志路径从环境变量读取,log4j.xml配置如下: 具体配置如下: log4j.appender.R.Encoding=UTF-8 log4j.appender.R=org.apache ...

  6. Zookeeper原理和应用

    ZooKeeper基本原理 数据模型 如上图所示,ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode.每个ZNode都可以通过其路径唯一标识, ...

  7. 网站建设中用JS判断时间并显示不同内容

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. codeforces 443 B. Kolya and Tandem Repeat 解题报告

    题目链接:http://codeforces.com/contest/443/problem/B 题目意思:给出一个只有小写字母的字符串s(假设长度为len),在其后可以添加 k 个长度的字符,形成一 ...

  9. hdu 1286 找新朋友(欧拉函数)

    题意:欧拉函数 思路:欧拉函数 模板,代码略.

  10. 喵哈哈村的魔法考试 Round #1 (Div.2)

    比赛地址:http://qscoj.cn/contest/2/ 都是中文题,这里不在详述题意 A.喵哈哈村的魔法石 分析:暴力求解 #include<iostream> #include& ...