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.

把标签推送到远程

git push  --tag
本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。
 

Git是个好工具(转)的更多相关文章

  1. [转]Git调用第三方对比工具beyondCompare

    点击阅读原文 对于我这种 git 命令行小白来说, git 自带的对比工具各种水土不服,想念以前的 svn 小乌龟 + beyondCompare 的日子...纠结完 gitHub client 未果 ...

  2. 配置Meld为git的默认比较工具

    1. 安装 meld sudo apt-get install meld 2. 创建 git_meld.sh 脚本 cd /bin vim git-meld.sh #!/bin/sh meld $2 ...

  3. Git - 可视化冲突解决工具P4Merge

    P4Merge P4Merge是Git的一个第三发Diff和Merge工具(可视化冲突解决工具). 下载地址: https://www.perforce.com/downloads/visual-me ...

  4. [转]VS2015 Git 源码管理工具简单入门

    VS2015 Git 源码管理工具简单入门   1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本 ...

  5. git与代码托管工具

    1.git初识 git是一个版本管理工具,用来管理项目的不同的版本,记录下不同的提交记录,git还可以构建不同的分支,用来给不同的人来推送使用. 推荐的git教程:https://www.cnblog ...

  6. VS2015 Git 源码管理工具简单入门

    1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Meger) 获取 ...

  7. Git是个好工具

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

  8. Git快速上手 : Tortoise工具使用

    利用工具快速上手Git 别跟我说什么用命令操作Git,多高大上呀,请不要在这里跟我装逼,就如同,有个小妞在床上眉眼诱惑地,你却TM还要先看个片儿来热热身.... TortoiseGit  名字看着眼熟 ...

  9. SourceTree - 好用的 Git / Mercurial GUI 管理工具 for Mac OS X

    Git 是免費.開放源碼的分散式版本控制系統,從小專案到非常大的專案,都可以很快速.有效地管理. 對程式設計師來說,一定要熟記 git 指令的用法,在終端機下操作 git 是必備的基本技能.(其他的 ...

随机推荐

  1. jenkins集群加入Windows 2012 server作为slave

    必须安装.net framework 3.5, 參考: http://technet.microsoft.com/en-us/library/dn482071.aspx 不要在windows 2012 ...

  2. PHP --字符串编码转换(自动识别原编码)

    /** * 对数据进行编码转换 * @param array/string $data 数组 * @param string $output 转换后的编码 */ function array_icon ...

  3. codeforces #256 A. Rewards

    A. Rewards time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  4. Windows 2008 配置ASP+ACCESS环境(亲身体会)

    我们公司OA系统是用asp开发的,时间有些长了,原来只是公司总部,部署到内网就可以了,现在要求全国各地的分公司也要用,而且接入了56短网的短信接口(http://www.56dxw.com),主要起到 ...

  5. WPF 3D:MeshGeometry3D的定义和光照

    原文 WPF 3D:MeshGeometry3D的定义和光照 由于WPF计算光照会根据整个平面的方向向量,所以如果在不同面上使用同一个点可能会达到不同的光照效果.让我们用不同的定义Mesh的方法来演示 ...

  6. jQuery插件使用和写法

    jQuery插件分类3中: 1.封装对象方法的插件. 2.封装全局函数的插件. 3.选择器插件. jQuery插件机制 jQuery提供了两个用于扩展jQuery功能的方法: 1.jQuery.fn. ...

  7. UVA 11388-GCD LCM(数学)

    I I U C   O N L I N E   C  Problem D: GCD LCM Input: standard input Output: standard output The GCD ...

  8. Directx11学习笔记【七】 游戏定时器的实现

    无论是在动画还是在一些游戏中,定时器总是必不可少的,游戏的帧数动画的播放等都离不开定时器的控制.这里以dx11龙书中提供的定时器为例,具体看看是怎么实现一个简单但精度高使用方便的定时器的. 这个定时器 ...

  9. Scrapy系列教程(2)------Item(结构化数据存储结构)

    Items 爬取的主要目标就是从非结构性的数据源提取结构性数据,比如网页. Scrapy提供 Item 类来满足这种需求. Item 对象是种简单的容器.保存了爬取到得数据. 其提供了 类似于词典(d ...

  10. 开源 自由 java CMS - FreeCMS1.9 评论管理

    项目地址:http://code.google.com/p/freecms/ 评论管理 1. 评论管理 从左側管理菜单点击评论管理进入. 2. 评论审核 选择须要审核的评论,然后点击"审核& ...