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. pyenv 以及 virtualenv

    244 pyenv global 3.5.1 245 which python 246 python 247 pip install virtualenv 248 ls 249 pwd 250 ls ...

  2. centos7 nginx用systemctl方式管理的脚本

    vim /usr/lib/systemd/system/nginx.service [Unit] Description=nginx - high performance web server Doc ...

  3. python多线程备份MYSQL数据库并删除旧的备份。

    #!/usr/bin/python # -*- coding=utf-8 -*- import time import os import datetime import threading from ...

  4. myBatis 实现用户表增删查改操作<方法1 没有使用接口的>(最终版)

    在UserMapper.xml中添加增删改查 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYP ...

  5. 反射中 GetCustomAttributes

    public abstract object[] GetCustomAttributes(bool inherit); 这是GetCustomAttributes方法的一个重载,参数为bool类型返回 ...

  6. EF图解

  7. 内存不能为read修复方法:(转自:网上(忘记了))

    指令修复法!开始菜单,运行 ,输入cmd, 回车,在命令提示符下输入(复制即可) : for %1 in (%windir%\system32\*.ocx) do regsvr32.exe /s %1 ...

  8. poj2485 Highways

    Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...

  9. docker的四种网络模式

    /* 1. host模式 : docker run 使用 --net=host指定 docker使用的网络实际上和宿主机一样 2. container模式: 使用 --net=container:co ...

  10. Longest Common Subsequence & Substring & prefix

    Given two strings, find the longest common subsequence (LCS). Your code should return the length of  ...