Git是分布式版本控制系统,我们常用的版本控制工具还有SVN。这里就得区分下什么是分布式版本控制系统,什么是集中化的版本控制系统。

集中化的版本控制系统

集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )。这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

优点:

1. 每个人可以看到别人做了什么

2. 管理员管理权限也比较简单

缺点:

依赖中央服务器,存在单点故障的风险。

1. 中央服务器宕机后,都无法协同工作

2. 如果中央服务器的文件损毁,又没有备份时,丢失的数据无法找回

分布式版本控制系统

分布式版本控制系统( Distributed Version Control System,简称 DVCS )。在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

优点:
1. 适合分布式开发,强调个体

PS:允许支持上千个并行开发的分支
2. 公共服务器压力和数据量都不会太大
3. 速度快、灵活

PS:特别在打分支和打Tag时候
4. 任意两个开发者之间可以很容易的解决冲突
5. 离线工作

PS:本地仓库

缺点:
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息

分支

Git最关键地方即是分支,分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。如果要了解Git,这个是最重要的,可以查看下面学习资料。

 
学习资源

这一篇文章纯粹只是记录一些东西,并不会讲Git的工作原理、怎么用,因为资料已经非常完善了,使用到时查看即可。

1. 廖雪峰Git教程(中文)

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013744142037508cf42e51debf49668810645e02887691000

2. 图解Git/图形化的Git参考手册(了解原理非常有用)

http://blog.jobbole.com/22647/

3. Git官方教程(英文)

http://git-scm.com/blog

4. Git - 生成 SSH 公钥

https://git-scm.com/book/zh/v1/服务器上的-Git-生成-SSH-公钥

下载Git

1. window git安装包

https://git-for-windows.github.io/

2. mac

Git安装工具:http://sourceforge.net/projects/git-osx-installer/

通过Xcode安装:Xcode->Preferences->Downloads,选择“Command Line Tools”

Eclipse Git

我是个懒人,不喜欢打命令去操作Git,可视化操作才是我想要的,所以就找了在Eclipse上使用Git方法。

1. Eclipse上安装GIT插件EGit及使用

http://yufenfei.iteye.com/blog/1750124/

2. 解决eclipse中egit中的cannot open git-upload-pack问题

http://www.xuebuyuan.com/1587775.html

总结

使用什么版本控制工具,无论是集中式或分布式,没有谁绝对取代谁,存在都是原因的,各有各自的适用场景。

附录

下面记录一些命令,来源于培训教程
创建Git仓库
初始化Git仓库

$ git init  

配置用户信息

$ git config user.name 'someGuy'
$ git config user.email 'someGuy@bingo.com'

添加文件
创建一个文件

$ touch README.md

查看仓库当前状态

$ git status

添加文件到暂存区

$ git add .

提交暂存区文件到仓库

$ git commit -m 'add README.md file'

提交修改
将修改添加到暂存区

$ git add README.md

将暂存区中的修改提交到仓库

$ git commit -m 'edit README.md'

撤销
撤销add到暂存区的操作

$ git reset HEAD README.md

撤销对文件所做的修改

$ git checkout — README.md

将暂存区中的修改提交到仓库

$ git commit -m 'edit README.md'

版本回滚
查看提交历史记录

$ git log

回到上次的提交

$ git reset --hard README.md

返回最近的提交

$ git reset --hard 0ff9

链接到远程仓库
添加远程仓库

$ git remote add origin git@git.bingosoft.net:gongke/GitLession.git

提交代码到本地仓库

$ git commit -a -m '将要提交到远程'

将本地的master分支推送到远程的origin分支,并与之建立连接

$ git push -u origin master

在分支上提交、合并分支
修改若干文件,提交

$ git commit

切换回master分支

$ git checkout master

合并分支

$ git merge dev

删除分支

$ git branch -d dev

有冲突的合并
新建一个分支并切换到它

$ git checkout -b new_feature

合并分支

$ git merge new_feature

若没有发生冲突则会自动生成一个提交若发生冲突,则需要手动解决冲突,再提交

$ git add conflict_filegit commit - m 'conflict solved'

打标签
创建标签

git tag v1.0
git tag -a v1.1 -m '1.1 released!'

查看标签

git tag

删除标签

git tag -d v1.0

把标签推送到远程

git push  --tag

Git 分布式版本管理的更多相关文章

  1. Git分布式版本管理工具基本使用方法

    一.Git简介 早先linux内核代码托管在BitKeeper,这个是商业的,但是免费给linux社区使用: linux社区有个人试图破解BitKeeper,被BitKeeper发现后不再免费提供使用 ...

  2. Git 分布式版本管理器 windows环境下使用

    首先需要下载Git来安装  没有安装文件的小伙伴可以网盘下载——>   https://pan.baidu.com/s/1owwUItDri9skqYzOjzXLsw 之后安装Git  一路很顺 ...

  3. 分布式版本管理git学习资料整理推荐

    一.什么是git? Git is a free and open source distributed version control system designed to handle everyt ...

  4. 用好SVN与Git,版本管理都不是问题

    介绍一下SVN SVN:代码控制器(版本控制器),主要是为了多人协同开发项目,管理代码.也可以管理个人代码.也叫程序界的”后悔药“. SVN(是subversion的简称)是近年来一款基于C/S架构的 ...

  5. git分布式版本控制系统的概述和安装

    Git历史 同生活中的许多伟大赛事一样,Git诞生于一个极富纷争大举创新的年代.Linux内核开源项目有着为数众广的参与者.绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(19 ...

  6. 实验一 GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

  7. 实验一  GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ini ...

  8. 实验一Git代码版本管理

    GIT代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git ...

  9. 实验一  GIT 代码版本管理

    实验一  GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)   熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...

随机推荐

  1. 数据库的模糊查询mybatis

    <!-- oracle --> <select id="searchUserBySearchName" parameterType="java.lang ...

  2. http https 区别

    HTTPS和HTTP的区别 一.https协议需要到ca申请证书,一般免费证书很少,需要交费.  二.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议.  三. ...

  3. Linux 查看CPU,内存,硬盘 !转

    Linux 查看CPU,内存,硬盘 本文转自:http://hi.baidu.com/mumachuntian/item/a401368dbe8a66cab07154e8 1 查看CPU 1.1 查看 ...

  4. 错误 1 未知的服务器标记“asp:ScriptManager”。

    如题 ... 解决方案 :将 <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=ne ...

  5. 繁华模拟赛 Vicent坐电梯

    /*n<=5000­这样就不能用O(n)的转移了,而是要用O(1)的转移.­注意我们每次的转移都来自一个连续的区间,而且我们是求和­区间求和?­前缀和!­令sum[step][i]表示f[ste ...

  6. 注意页面上的时间戳可能会成为bd快照的时间_快照不更新的原因

    之前在创建内容的时候,为了提高说服力,添加了一个原始文章的地址**.com.cn/2013-08/22/content_**.htm,当时写文章是在12月份,单快照直接变成原始文章的时间戳8.22

  7. Hadoop之伪分布环境搭建

    搭建伪分布环境 上传hadoop2.7.0编译后的包并解压到/zzy目录下 mkdir /zzy 解压 tar -zxvf hadoop.2.7.0.tar.gz -C /zzy     配置hado ...

  8. 裸设备和Oracle问答20例

    导读裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Unix通过文件系统来读取的特殊字符设备.裸设备可以绑定一个分区,也可以绑定一个磁盘.本文收集裸设备和Oracle问答20例. 1.什么叫 ...

  9. [POJ1157]LITTLE SHOP OF FLOWERS

    [POJ1157]LITTLE SHOP OF FLOWERS 试题描述 You want to arrange the window of your flower shop in a most pl ...

  10. ubuntu硬盘安装卡在探测文件系统

    在硬盘安装ubuntu的时候,会出现这样的问题:安装程序一直卡在正在探测文件系统就不动了.解决的方法很简单.在安装之前要在终端输入sudo空格umount空格 -l空格 /isodevice 不能少一 ...