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

.png)
优点:
1. 每个人可以看到别人做了什么
2. 管理员管理权限也比较简单
缺点:
依赖中央服务器,存在单点故障的风险。
1. 中央服务器宕机后,都无法协同工作
2. 如果中央服务器的文件损毁,又没有备份时,丢失的数据无法找回
分布式版本控制系统( Distributed Version Control System,简称 DVCS )。在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

.png)
优点:
1. 适合分布式开发,强调个体
PS:允许支持上千个并行开发的分支
2. 公共服务器压力和数据量都不会太大
3. 速度快、灵活
PS:特别在打分支和打Tag时候
4. 任意两个开发者之间可以很容易的解决冲突
5. 离线工作
PS:本地仓库
缺点:
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息
Git最关键地方即是分支,分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。如果要了解Git,这个是最重要的,可以查看下面学习资料。

这一篇文章纯粹只是记录一些东西,并不会讲Git的工作原理、怎么用,因为资料已经非常完善了,使用到时查看即可。
1. 廖雪峰Git教程(中文)
http://blog.jobbole.com/22647/
3. Git官方教程(英文)
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 分布式版本管理的更多相关文章
- Git分布式版本管理工具基本使用方法
一.Git简介 早先linux内核代码托管在BitKeeper,这个是商业的,但是免费给linux社区使用: linux社区有个人试图破解BitKeeper,被BitKeeper发现后不再免费提供使用 ...
- Git 分布式版本管理器 windows环境下使用
首先需要下载Git来安装 没有安装文件的小伙伴可以网盘下载——> https://pan.baidu.com/s/1owwUItDri9skqYzOjzXLsw 之后安装Git 一路很顺 ...
- 分布式版本管理git学习资料整理推荐
一.什么是git? Git is a free and open source distributed version control system designed to handle everyt ...
- 用好SVN与Git,版本管理都不是问题
介绍一下SVN SVN:代码控制器(版本控制器),主要是为了多人协同开发项目,管理代码.也可以管理个人代码.也叫程序界的”后悔药“. SVN(是subversion的简称)是近年来一款基于C/S架构的 ...
- git分布式版本控制系统的概述和安装
Git历史 同生活中的许多伟大赛事一样,Git诞生于一个极富纷争大举创新的年代.Linux内核开源项目有着为数众广的参与者.绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(19 ...
- 实验一 GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...
- 实验一 GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2)熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ini ...
- 实验一Git代码版本管理
GIT代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git init git ...
- 实验一  GIT 代码版本管理
实验一 GIT 代码版本管理 实验目的: 1)了解分布式分布式版本控制系统的核心机理: 2) 熟练掌握git的基本指令和分支管理指令: 实验内容: 1)安装git 2)初始配置git ,git ...
随机推荐
- 删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法
删除ecshop底部共执行个查询Gzip 已禁用,占用内存方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-03-25 “共执行 41 个查询,用时 2 ...
- emmet使用 及 notepadd++ emmet的安装
emmet的使用的参考文章:http://www.cnblogs.com/sussski/p/3544744.html html:4s.html:4t.html:5或! +.>.^:层次 *.@ ...
- 【iOS】app的生命周期
对于iOS应用程序,关键的是要知道你的应用程序是否正在前台或后台运行.由于系统资源在iOS设备上较为有限,一个应用程序必须在后台与前台有不同的行为.操作系统也会限制你的应用程序在后台的运行,以提高电池 ...
- stripslashes — 反引用一个引用字符串
stripslashes (PHP 4, PHP 5) stripslashes — 反引用一个引用字符串 Report a bug 说明 string stripslashes ( string ...
- odbc错误信息一览表
ODBC 错误信息 根据 X/Open 和 SQL Access Group SQL CAE 规范 (1992) 所进行的定义,SQLERROR 返回 SQLSTATE 值.SQLSTATE 值是包含 ...
- 在docker里面安装部署应用
最近一直在做docker的安装打包工作,学到不少东西,在博客里记一下. 环境centos6 ,docker 基础镜象centos6 1.创建本地基础镜象,安装基础命令包 (1)Dockerfile,D ...
- 一起做RGB-D SLAM (1)
前言 2016.11 更新 增加了对16.04的支持. 整理了过时的代码. SLAM,即Simultaneous Localization and Mapping,中文译作同时定位与地图创建,是近几十 ...
- Kruskal vs Borůvka
做了个对比.Borůvka算法对于稠密图效果特别好.这两个都是求生成森林的算法.Prim+heap+tarjan过于难写不写了. V=200,E=1000 Kruskal method 4875048 ...
- Python中请使用isinstance()判断变量类型
一.isinstance() 在Python中可以使用type()与isinstance()这两个函数判断对象类型,而isinstance()函数的使用上比type更加方便. # coding=utf ...
- 如何实现SSH断开后 进程仍然在后台运行
1.nohup命令功能:不挂断地运行命令,忽略HUP信号.语法:nohup command & 实例:nohup ping www.google.com & 转自: http://bl ...