题记:呵呵,首先声明,题目起的有点大,其实我只想介绍下VS2013和TFS2013新加入的Git功能,也不是在VS中使用Git的详细向导(以后有空再详细分享给大家)。这篇文章虽然在写这篇文章《Visual Studio 2013 发布正式版及使用感受》的时候,心中就有此打算,后来有朋友回复说让我介绍一下Git的使用,更是让我觉得很有必要介绍一下这方面的内容。可惜拖了这么久才开动。

Git是什么

Git是一种近来很流行的版本控制系统(或称源代码管理系统),和传统的SVN、TFVC(TFS Version Control)这样的系统而言,最大的特点就是分布式。所谓分布式是相对于SVN这种集中式而言的,SVN或者TFVC都需要有一个中心服务器保存着源代码,所有开发者都使用客户端和这个服务器交互。

Git是Linux内核之父为了管理繁杂的Linux内核而开发的开源系统,随着GitHub这样的开源代码托管系统大热,而为很多人知晓使用。

Git的强大潜力并非真正在于分布式,而是在于其对源代码存储的机制(使用快照),由于这样的机制存在,你可以大量频繁的使用分支来工作,通过分支来隔离功能开发的过程。如果要在TFVC中频繁建立分支是不可想象的。比如我的一个以前的解决方案文件夹大约600M,如果频繁使用分支,那么一方面我的磁盘会出现大量重复的文件占用大量的磁盘空间,另外一方面在VS的历史打开记录中会有很多名称一样的解决方案,你还需要去辨别其所在路径从而确定是否打开了正确的分支代码。

由于本篇文章不是专门介绍Git的,所以我不会进一步对Git进行过多介绍。要入门Git,可以查看《git - 简易指南》这样的手册,如果需要深入了解Git,建议精读《Git - Book》这本书。尤其对于打算把Git引入到团队的技术负责人更是要深入了解Git,以便做出正确的技术选择。另外,在开发过程中应用GitFlow也是一种很好的实践。

而我为什么使用Git,可以在《Visual Studio 2013 发布正式版及使用感受》中找到答案。

Git客户端:VS2013

由于VS针对源代码控制本身就提供了扩展接口,所以很早的时候,就有VS中使用Git的集成插件,比如:Git Source Control Provider

后来微软提供了官方的Git集成插件:Visual Studio Tools for Git。提供这个插件最初的原因(我猜想)是,由于Git大行其道,导致CodePlex等也不得不支持Git,从而为了更好的支持Git在VS中的使用,微软就着手开发了这个插件。

这个微软官方的插件仅支持VS2012 Update 3的安装,其已经内置于VS2013的所有版本中(包括免费版)。这个工具内置了对于Git基础命令的操作功能,如果需要更高级的功能,可以安装第三方Git命令行工具(Git Bash)。同时,我也建议大家一并安装TortoiseGit这个工具,很多时候使用这个工具更顺手。

关于在VS2013中使用Git的详细文档,可见:http://msdn.microsoft.com/library/vstudio/hh850437

VS2013中的Git功能可以连接任意Git服务器实现的。

Git服务器:TFS2013

在解决了Git客户端和开发工具集成的问题后,就需要解决服务器的问题。既然微软在CodePlex中都提供了Git支持,那么为何不在TFS中也提供呢,于是就有TFS2013对于Git的支持。Git理论上可以不需要一个服务器的,不过为了团队更好的协同,还是有必要架设一个中心Git仓库服务器,供大家pull和push用。而Git服务器有如下几种选择:

  • GitHub、CodePlex或者CSDN CODE等开源项目托管服务器。GitHub也可以付费来托管闭源项目。
  • 可以自己架设。可以使用Git默认的实现,也可以使用一个用ASP.NET MVC 4实现的http://bonobogitserver.com/来架设。
  • 使用TFS服务,tfs.visualstudio.com。TFService在TFS2013发布之前(通过使用TFService就可以使用到TFS最新的特性,包括尚未正式发布的),就已经在提供Git的功能。创建团队项目的时候就可以选择使用TFVC还是Git,选定后无法更改。
  • 架设内部的TFS2013服务器。在TFS2013中直接内置了Git服务器的实现,无需额外安装任何Git Server,理所当然Git的内容会保存在SQL Server数据库中。TFS2013的Git实现可以被任意客户端所连接。同样也是创建团队项目的时候可以选择使用那种源代码管理方式,选定后无法更改。

Git和分布式团队协作

在TFS2013针对分布式团队的特点新增或加强了很多功能,最为显著的两个功能就是Git和Team Room。

Git由于具备分布式的特点,可以让地域不在一起的团队,更快的提交代码;每个地域的办公室也可以维护一个自己的共享库,让本地办公室的同事不同代码;各个办公室的代码也可以通过公司统一的Git服务器来同步。

当然这种分布式的源代码协作方式由于会在每个开发人员的机器上保存几乎完整的源代码库,虽然可以通过TFS等进行权限控制,但有些企业还是跟倾向于中心式的源代码管理系统如TFVC,这样对于代码可以更好的进行控制。

如果对于一个小型创业团队。通过使用Git+TFService的话,那么就可以在很自由和免费的环境下工作。比如,小型的创业团队可能都没有办公室,那么只需要去免费申请一个TFService(5个内免费使用),用Git创建工程,用VS2013 Express开发项目,那么大家的代码、工作进度都可以很好的管理起来。

最后源代码可以Git分布式了,开发进度也可以用TFS的WorkItem来分布式协作了,甚至团队交流都可以通过Team Room来分布式进行了。

这里有一些相关文章,可以进行扩展阅读:

http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx

http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx

另外,我在TechEd2013的北京、上海站,都会主持敏捷协同开发相关的HOL(动手实验室)。欢迎大家参加:http://technet.microsoft.com/zh-cn/teched2013_hols

使用VS2013、TFS2013和Git进行分布式团队协作的更多相关文章

  1. 图文详解如何利用Git+Github进行团队协作开发

    团队协作开发中,大部分都会用到版本控制软件,比如Git.Svn等.本文将通过一个实例,详细讲解在真实的工作环境中,一个团队应该如何利用Git+Github进行协作开发,即详解Git工作流程.并就其中比 ...

  2. 使用TFS+GIT实现分布式项目管理

    前言 GIT是近来很流行的一种版本控制系统,是Linux内核之父Linus Torvalds为了管理Linux内核的开发而开发的一种开源的版本控制工具. GIT相比传统的版本控制工具最大的优点是实现了 ...

  3. 如何使用Git提高研发团队工作效率?

    为什么使用Git 随着互联网时代的来临与发展,尤其分布式开发的大力引入,对于开发工程师来说,代码管理变成了头等难题.10多个人或者更多的成员的研发团队如何管理同一份代码,异地办公如何跟同事有效的维护同 ...

  4. 利用Git进行团队协作

    前言: 这里简单介绍一下Git的历史. 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了 ...

  5. 杂项:GIT (分布式版本控制系统)

    ylbtech-杂项:GIT (分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git的读音为/gɪt/.Git是一个开源的分布式版本控制系统 ...

  6. [转]VS2013中使用Git建立源代码管理

    本文转自:https://blog.csdn.net/bodybo/article/details/38976549 第一次在VS2013中使用Git,也是第一次使用Git,各种不熟悉.百度各种使用经 ...

  7. VS2013中使用Git建立源代码管理

    原文:http://blog.csdn.net/bodybo/article/details/38976549/ 第一次在VS2013中使用Git,也是第一次使用git,各种不熟悉.百度各种使用经验, ...

  8. VS2013中使用git发布解决方案master分支的时候出现错误

    VS2013GIT基础用法请自行参考:不会Git命令,照样玩转Git 环境:VS2013+ 码云错误描述:在VS2013中使用git发布解决方案master分支的时候出现“无法将本地分支 master ...

  9. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

随机推荐

  1. MT【199】映射的个数

    (2018中科大自招)设$S=\{1,2,3,4,5\}$则满足$f(f(x))=x$的映射:$S \longrightarrow S$的个数____解答:由于$a\ne b$时必须满足$f(a)=b ...

  2. 【USACO 1.4】Combination Lock

    /* TASK:combo LANG:C++ URL:http://train.usaco.org/usacoprob2?a=E6RZnAhV9zn&S=combo SOLVE:自己做,想的是 ...

  3. luogu4155/bzoj4444 国旗计划 (倍增)

    成环,把每个区间变成两个然后展开成链 一个人的下一个人肯定是在彼此相交的基础上,右端点越大越好 于是就把它连到相交的.右端点最大的点上,连成一棵树 于是每次只要从某个节点开始,一直在树上跳到覆盖了一个 ...

  4. Linux上SSH登录远程服务器免密码

    在本地的客户端SSH到远程服务端时,每次都要输入用户名和密码,如果不想每次都输入密码则可以使用以下操作. 首先在本地的客户端输入 ssh-keygen [keysystem@localhost ~]$ ...

  5. hdu 1789 Doing HomeWork Again (贪心算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 /*Doing Homework again Time Limit: 1000/1000 MS ...

  6. Java IO 类一览表

    下表列出了大多数(非全部)按输/输出,基于字节或字符划分的 Java IO 类.

  7. zabbix监控的基础概念、工作原理及架构(一)

    zabbix监控的基础概念.工作原理及架构 转载于网络 一.什么是zabbix及优缺点 Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...

  8. LaTeX文章结构

    %导言 %\documentclass{article} %ctexbook \documentclass{ctexbook} \title{\heiti 监督学习} % 黑体 \author{\ka ...

  9. AngularJS 启程

    <!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="UT ...

  10. [整理]CSS3 滤镜

    1.灰度 兼容 http://www.526net.com/blog/qianduan/226.html http://james.padolsey.com/demos/grayscale/grays ...