最近公司打算使用git代替之前的svn版本控制工具,趁此机会打算好好学学git,这个号称当今世界最牛的分布式版本控制工具。

  一、【git和svn的主要区别

  1、去中心化  svn以及微软的TFS均采用中心服务器架构,即所有的提交、获取都需要与中心服务器交互。如果开发人数较多会导致中心服务器流量压力大,并且一旦中心服务器挂掉(之前公司使用TFS中心服务器硬盘坏掉),所有的提交记录、稳定版本代码等均存在丢失的风险。而git采取分布式架构,即所有开发者服务器上均存在完整的本地仓库,则不存在这些问题。

  2、本地独立使用  使用git可以进行本地提交/撤销,即没有中心服务器一样可以进行完整的版本控制;而svn则必须存在可用的中心服务器才能使用。

  3、集成式提交  刚接触git时可能对git add命令有些难以理解,因为使用svn时并没有这一中间环节,每次进行提交时都必须对修改的文档进行add操作会觉得麻烦。但使用习惯之后便会由心的接受这一步骤,因为它有许多的好处。当我们使用svn进行大功能开发时,每完成一个单独的小模块时都会很想提交,但若提交到服务器则可能会影响别的开发人员,因为该功能的开发并未完成,此时svn则无法对我们本地正在开发的代码进行有效的控制。而使用git则可以每完成一个小步骤,就进行add提交到暂存区,并随时可以在此基础上进行撤销等操作;通过集成这样的细粒度暂存区提交,让我们对本地仓库进行真正提交时有更好的备注说明,以便后期对版本历史进行追踪。

  4、便捷的分布式开发  使用git后你会发现原来在公司和在宿舍一样开发。特别对于一些工作之余开发的个人小项目,既会在公司进行开发,亦可能在宿舍进行修改,使用git可以进行方便同步的分布式开发,即使偶尔没有网络。同时,使用如github/oschina这样的免费代码托管网站会使这一过程变得简单自然。

  5、不同存储区域  git不同于svn将所有的版本数据都放在中心服务器【远程仓库】,而在本地也存在所有提交的版本数据【本地仓库】,并且还存在一个【暂存区】版本存储区域,它可以在未正式提交到【本地仓库】时,暂存下我们当前版本的修改【工作区的修改】。

  二、【msysgit (git for windows)的安装

  通过http://msysgit.github.io/获取最新版本的git安装包,其自带git bash命令式交互与简单的GUI交互界面。下载后傻瓜式安装,根据提示进行选择性安装,若不习惯使用msysgit自带的GUI,可以选择不加入右键菜单。习惯windows交互界面的可自行安装source tree,通用的git客户端界面管理工具。

  三、【git bash基础命令】

  安装好msysgit后,使用window自带资源文件管理器进入需要进行版本控制的目录,就可以正式开始使用git对咱们的项目进行版本控制了。下面按照一般使用顺序介绍git bash日常使用中会用到一些命令:

  1. git config --global user.name "your name"  设置全局提交代码人的名称
  2. git config --global user.email "your email"  设置全局提交代码人的邮件地址
  3. git init  将当前目录初始化为git仓库 (成功初始化git仓库后会在当前目录生成.git隐藏文件夹,里面存放了版本数据以及各种git配置数据,并会将当前目录、所属子目录纳入版本控制范围)
  4. git status  查看当前git仓库代码/文件的状态,在每次提交时都可以使用该命令查看修改状态
  5. git add .  添加当前目录所有文件到暂存区 (暂时忽略已添加的多余的文件)
  6. git commit -m "提交说明"  提交到本地仓库的备注,以便后期进行版本追踪

  到此为止,第一次初始化git仓库并向其提交一次修改就结束了。当然这只是一个顺利的开始,但我们在实际工作中可能会遇到更多的问题,比如撤销、比较、推送、获取等,在此就不能根据顺序一一介绍了。常用的操作命令请参见附录。

  四、【git bash使用代码比较/合并工具Beyond Compare】

  在git日常使用中,我们难免会在提交前、审核代码时,比较本次提交代码的具体修改。使用git diff命令只能在当前命令窗口查看,并不能很好的体现代码的具体修改。而相信使用过文本比较工具如 Beyond Compare的童鞋都会更想使用友好的第三方专业文本比较工具来进行这项工作。

  下面简单介绍如何配置git使用Beyond Compare 4来进行代码比较与合并,其中Beyond Compare 4的路径为默认安装路径:

  在配置了git全局代码提交人名称之后,git会自动将其配置存放在当【系统前用户目录】下的.gitconfig文件中,而我们只需要打开这个文件,并在其中追加文本:

      [diff] tool = bc4
  [difftool] prompt = false
  [difftool "bc4"]
  cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
  [merge] tool = bc
  [mergetool] prompt = false
  [mergetool "bc4"]
  cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""

  现在,我们便可以在提交代码前,使用命令git difftool来对工作区和暂存区的代码进行友好的比较了。

  由于时间关系,本文先介绍到此,若有机会将后续将分享使用git进行团队开发中的一些问题与解决方案

  五、【附录】常用git命令

  初始化:
  git clone 远端仓库地址 (克隆远端项目)
  git init (将当前路径设为git仓库)
  git config --global core.excludesfile "file" (配置全局忽略文件)
  git config -l (查看全局配置)

  提交修改到暂存区:
  git add . (将当前路径所有文档添加到暂存区, 初始化仓库时使用)
  git add -A (推荐使用, 将所有新增、修改和删除的进行标记)

  撤销暂存区修改
  git reset <HEAD> fileName (丢弃[暂存区]的修改)
  git reset . 取消所有add文件(丢弃暂存区的修改)
  git reset --hard commit_id

  撤销工作区修改
  git checkout -- file (丢弃[工作区]的修改)
  git checkout . 撤销所有工作区修改

  删除暂存区文件
  git rm --cached <file> add之后, 取消add部分文件

  比较(使用比较工具)
  git difftool 比较当前工作区与暂存区之间的区别
  git difftool <版本号1> <版本号2> <file> 比较文档不同版本号

  查看历史
  git log <file> 查看某文档的历史版本(之后按end光标跳到最后,s键生成log记录文档,q退出)

  分支操作:
  git branch 分支名 (创建分支)
  git checkout 分支名 (切换到分支)
  git checkout -b "name" 创建并切换至分支

  其他
  git push 远端名 分支名 (将本地当前分支推送到远端)
  git pull --rebase origin master(将本地origin/master同步到最新)

git bash【初级入门篇】的更多相关文章

  1. git的使用(入门篇)

    1.Git 的安装 Window 下的安装 从 http://git-scm.com/download 上下载window版的客户端,然后一直下一步下一步安装git即可,请注意,如果你不熟悉每个选项的 ...

  2. SpringBoot从零单排 ------初级入门篇

    有人说SSM已死,未来是SpringBoot和SpringCloud的天下,这个观点可能有点极端,但不可否认的是已经越来越多的公司开始使用SpringBoot.所以我将平时学习SpringBoot的内 ...

  3. ADO数据库编程详解(C++)----初级入门篇

    一.概述 ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过 OLE DB提供者对在数据库 ...

  4. Linux入门篇(六)——Shell(二)

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

  5. .NET Core实战项目之CMS 第四章 入门篇-Git的快速入门及实战演练

    写在前面 上篇文章我带着大家通过分析了一遍ASP.NET Core的源码了解了它的启动过程,然后又带着大家熟悉了一遍配置文件的加载方式,最后引出了依赖注入以及控制反转的概念!如果大家把前面几张都理解了 ...

  6. 版本控制工具Git工具快速入门-Windows篇

    版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...

  7. SpringCloud实战之初级入门(三)— spring cloud config搭建git配置中心

    目录 1.环境介绍 2.配置中心 2.1 创建工程 2.2 修改配置文件 2.3 在github中加入配置文件 2.3 修改启动文件 3. 访问配置中心 1.环境介绍 上一篇文章中,我们介绍了如何利用 ...

  8. shell脚本从入门到精通(初级)之入门篇

    写在开头 本文是阅读<Linux命令行与shell脚本编程大全>时的一些笔记,主要是shell脚本的一些基本语法, 还有很多细节和高级内容没有写到. 笔者也是shell script菜鸟, ...

  9. Linux入门篇(四)——Vim的使用与Bash

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

随机推荐

  1. [条形码] BarCodeToHTML条码生成类 (转载)

    点击下载 BarCodeToHTML.zip 过多的我就不多说了大家直接看代码吧,这是一个帮助大家生成条码的类,大小大家可以自由的设定 /// <summary> /// 类说明:条码生成 ...

  2. Chart图形 [功能帮助类] Assistant创建显示图像的标签和文件 (转载)

    点击下载 Assistant.zip /// <summary> /// 类说明:Assistant /// 联系方式:361983679 /// 更新网站:[url=http://www ...

  3. 对于百川SDK签名验证的问题

    SDK是要在wantu.taobao.com生成的.而生成这个SDK其实是要上传一个apk,而这个上传其实就是取他的签名而已.验证就是那张yw222那张图片.重点是你上传的apk的签名是不是跟你的生成 ...

  4. 分享:Svg文件转换为图片(调用 Inkscape 命令行)

    其实只是做了简单封装,可以方便进行批量转换. 获取Svg对象坐标的代码请看:根据svg节点对象类型和路径值转换坐标值, DrawingColor方法是进行颜色填充的. /// <summary& ...

  5. Android - 向服务器发送数据(POST) - HTTPClient.

    该篇文章主要说明使用Apache提供的HTTPClient,通过post方式,向服务器发送数据.由于有些东西在 Android - 向服务器发送数据(GET)中提到过,就不再重复. 一,Android ...

  6. Oracel JDBC URL 和 Driver 的获取

    Driver 的获取 Driver Name:   oracle.jdbc.driver.OracleDriver Oracel JDBC URL的获取: URL:   jdbc:oracle:thi ...

  7. 流形(Manifold)初步【转】

    转载自:http://blog.csdn.net/wangxiaojun911/article/details/17076465 欧几里得几何学(Euclidean Geometry) 两千三百年前, ...

  8. C#程序中:如何向xml文件中写入数据和读取数据

    xml文件作为外部信息存储文件使用简单,方便,其结构和表格略有相似,下面简单的说一下xml文件内容的读取 …… using System.Xml;using System.IO;namespace W ...

  9. Gvim7.4简单配置

    今天下午小折腾了一会Gvim编辑器(7.4版,目前最新).看起来高端又没有代码提示,还能锻炼锻炼记忆. 修改了下默认启动配置<修改后如下图>: 打开编辑器: 编辑->启动设定-> ...

  10. node 后台ajax文件(同时支持http、https)

    var http = require("http"), Url = require("url"), querystring = require('queryst ...