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.
git tag -a v1. -m '1.1 released!'
查看标签
git tag
删除标签
git tag -d v1.
把标签推送到远程
git push --tag
Git是个好工具的更多相关文章
- [转]Git调用第三方对比工具beyondCompare
点击阅读原文 对于我这种 git 命令行小白来说, git 自带的对比工具各种水土不服,想念以前的 svn 小乌龟 + beyondCompare 的日子...纠结完 gitHub client 未果 ...
- 配置Meld为git的默认比较工具
1. 安装 meld sudo apt-get install meld 2. 创建 git_meld.sh 脚本 cd /bin vim git-meld.sh #!/bin/sh meld $2 ...
- Git - 可视化冲突解决工具P4Merge
P4Merge P4Merge是Git的一个第三发Diff和Merge工具(可视化冲突解决工具). 下载地址: https://www.perforce.com/downloads/visual-me ...
- [转]VS2015 Git 源码管理工具简单入门
VS2015 Git 源码管理工具简单入门 1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本 ...
- git与代码托管工具
1.git初识 git是一个版本管理工具,用来管理项目的不同的版本,记录下不同的提交记录,git还可以构建不同的分支,用来给不同的人来推送使用. 推荐的git教程:https://www.cnblog ...
- VS2015 Git 源码管理工具简单入门
1.VS Git插件 1.1 环境 VS2015+GitLab 1.2 Git操作过程图解 1.3 常见名词解释 拉取(Pull):将远程版本库合并到本地版本库,相当于(Fetch+Meger) 获取 ...
- Git快速上手 : Tortoise工具使用
利用工具快速上手Git 别跟我说什么用命令操作Git,多高大上呀,请不要在这里跟我装逼,就如同,有个小妞在床上眉眼诱惑地,你却TM还要先看个片儿来热热身.... TortoiseGit 名字看着眼熟 ...
- SourceTree - 好用的 Git / Mercurial GUI 管理工具 for Mac OS X
Git 是免費.開放源碼的分散式版本控制系統,從小專案到非常大的專案,都可以很快速.有效地管理. 對程式設計師來說,一定要熟記 git 指令的用法,在終端機下操作 git 是必備的基本技能.(其他的 ...
- Git是个好工具(转)
Git是分布式版本控制系统,我们常用的版本控制工具还有SVN.这里就得区分下什么是分布式版本控制系统,什么是集中化的版本控制系统. 集中化的版本控制系统 集中化的版本控制系统( Centralized ...
随机推荐
- 机器学习&数据挖掘笔记_21(PGM练习五:图模型的近似推理)
前言: 这次练习完成的是图模型的近似推理,参考的内容是coursera课程:Probabilistic Graphical Models . 上次实验PGM练习四:图模型的精确推理 中介绍的是图模型的 ...
- Azure ARM (8) ARM Template - VS Code
<Windows Azure Platform 系列文章目录> 在上一节内容中,笔者介绍了如何使用Visual Studio来编辑ARM Template. 但是在某些时候,Visual ...
- 笔记:Html.Partial和Html.Action
1.带有Render的方法返回值是void,在方法内部进行输出:不带的返回值类型为MvcHtmlString,所以只能这样使用:@Html.Partial 对应 @{Html.RenderPartia ...
- 认识IoC
第一次接触IoC是我在学习MVP框架的时候,搭建一个MVP框架需要用到IoC,那时候就以为IoC就是依赖注入,但在后来的逐步了解中发现那个只是它的别名而已.IoC全称应该是Inversion of C ...
- 在Android开发中调用Rest web服务(转)
首先从维基百科上拷贝一点Rest的基本概念给大家看看,然后我们再开始详解在Android中如何调用Rest服务.表象化状态转变(英文:Representational State Transfer,简 ...
- Ado.net[增删改查,GET传值]
1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.c ...
- asp.net webapi 序列化为xml 时实体属性增加<![CDATA[]]>防止特殊字符
有时webapi在序列化xml时,可能需要给某些带有html或特殊字符(如 < > & /)的字段加上<![CDATA[]]> 已防止影响xml正常数据,如果使用.as ...
- MySQL Workbench 修改快捷键
在安装根目录查到\data\main_menu.xml这个文件 例如,修改执行sql语句的快捷键为F5 <value type="object" struct-name=&q ...
- ListView 使用 LiveBindings 显示超过 200 条记录
ListView 使用 LiveBindings 预设加载 200 条记录,这也许是速度的考量,但当需要全部加载的的情况时,该如何做呢?只需加入下面二行代码即可: FDQuery1.OptionsIn ...
- TSwitch 中文简繁显示支持(XE6 Android)
说明: XE6 的 TSwitch 做了很多改进,包含多语显示处理,但 XE6 似乎只认定一种中文语系「zh」,它无法处理「zh_TW」.「zh_CN」.「zh_HK」.「zh_SG」等语系,不过可以 ...