经过前段时间的研究,对Git分布式版本控制系统在visual studio 2012中的配置有了一定的了解,以下是我的一点经验分享。

第一部分: 安装 git 开发工具

如果要使用 git 进行版本管理,其实使用 git 命令行工具就完全足够了,图形化工具(无论是 git extentions ,还是TortoiseGit),都只不过是命令行的封装。就功能而言,他们能做的,命令行全部可以做到;但命令行能做的,他们不一定可以做到。命令行更加原生、本色,跨越平台,以一当十。建议熟悉 git 命令行工具。

但图形化工具也有自己的优点,就是直观。下面推荐的组合方案是:

Git 命令行(cygwin) + Git Extensions + Git Source Control Provider

——这个组合可以彻底解决中文文件问题(包括中文文件名、目录名,以及在 github 中的正常显示)。

1)安装 cygwin 命令行工具

安装教程见 http://www.cygwin.cn/site/install/ (setup.exe这个安装程序用迅雷之类的下吧,不然会报错)

安装过程中需要安装的软件:

◆ git-completion: 提供 Git 命令自动补齐功能。安装该软件包会自动安装依赖的 bash-completion 软件包。

◆ openssh:SSH 客户端,提供 Git 访问 ssh 协议的版本库。

◆ vim:是 Git 缺省的编辑器。

2)安装 git extensions

【作用】

git extensions 必须依赖于命令行工具,所以第二个安装。

它安装之后不但可以使用,也自动在vs2012中加上插件,可以在vs2012中非常直观的、方便的操作。

【安装方法】

下载网址:http://code.google.com/p/gitextensions/downloads/list选择GitExtensions246SetupComplete.msi那个带Complete字样的版本,它里面集成了 KDiff3 工具。

下载之后,双击安装,一路next,中间记得勾选 msysGit 和 KDiff3。

【配置】

目前git命令行工具有两种,一种是 cygwin 下命令行,一种是 msysGit 命令行,git extensions 可以配置使用哪一种命令行工具,如下图,我们选择使用 cygwin,而不是 msysGit

vs对比git仓库 vs2012 git_版本库

第一个是:“用户运行git的命令”

第二个是:全局配置文件,请点击“Change HOME”按钮,将目录改为 cygwin 的目录。

3)安装 Git Source Control Provider

【作用】

Git Source Control Provider 是 vs2012 的一个扩展插件,但必须依赖于 git extensions,所以第三个安装,它的作用是,可以显示文件状态、显示文件历史等,

让 vs2012 中文件操作更加方便。

【安装方法】

在vs菜单中点击“工具”的“扩展和更新”,然后点击左边的联机,在右上方搜索git,出现第一个结果就是 Git Source Control Provider,然后点击“下载”,

然后点击vs菜单的“工具”的“选项”,展开左侧的“Source Control”,在右侧的“当前源代码管理插件”中选择“Git Source Control Provider”,然后点击“确定”。

启用 Git Source Control Provider 之后,所有文件显示出状态图标。你可以在文件上右键进入 Git 菜单进行操作。

vs对比git仓库 vs2012 git_git_02

 

二、创建版本库

用 vs2012 新建一个项目,然后点击“Git”菜单中的“Initialize new repository”

vs对比git仓库 vs2012 git_git_03

弹出窗口,让你选择需要纳入git版本管理的目录——

vs对比git仓库 vs2012 git_git_04

初始化之后,在项目目录下,出现一个 .git 的隐藏文件夹,这个文件夹就是git版本库。

vs对比git仓库 vs2012 git_vs对比git仓库_05

和.git同处一个目录的所有文件,现在就纳入了这个版本库的范围之内。

现在你在这个目录下,可以执行 git 命令了。

比如下面就是在 git 命令行窗口中直接操作 git 命令,使用命令行,可以完成所有的 git 版本管理操作。

vs对比git仓库 vs2012 git_暂存区_06

 

三、将文件提交到版本库

只有将项目中的文件纳入版本库,我们才能享受到版本管理系统带来的好处,比如浏览历史版本,切换分支等……

1)首先,请关闭vs2012,然后重新打开。如果不重新打开,插件 Git Source Control 不能监控文件状态。

重新打开之后,文件显示状态符号:前面显示“+”加号,它表示这些文件的状态是“尚未纳入版本库”,需要你添加。

vs对比git仓库 vs2012 git_git_07

你可以点击“Git”菜单中的“Commit”进行提交

vs对比git仓库 vs2012 git_git_08

出现如下提交窗口

vs对比git仓库 vs2012 git_git_09

我们看到,这里需要提交的文件很多,但其实,很多文件是 vs 自动生成的临时文件,和项目内容没有关系,

不应该纳入版本管理,比如 ***.suo 文件,这时候,我们需要将这些文件设置为“需要忽略的文件”,让 git 不理会他们。

2)设置忽略文件

请关闭上面的 commit 窗口,点击 vs 菜单 “Git”中的命令“Edit .gitignore”

vs对比git仓库 vs2012 git_git_10

出现忽略文件的编辑窗口,这个窗口左侧的内容区目前是空白,没有内容。

vs对比git仓库 vs2012 git_git_11

不过右侧列举了一些常见的需要忽略的文件(默认),请点击右下侧的“添加默认的忽略项”按钮,将需要忽略的内容添加到左侧内容区,然后点击“保存”。

然后打开文件夹,你会看到项目中出现了一个名叫 .gitignore 的文件,它里面的内容就是你刚才保存的内容。

vs对比git仓库 vs2012 git_vs对比git仓库_12

3)提交步骤a (加入暂存区)

再次点击菜单“Git”中的“Commit”提交命令,现在提交窗口中显示需要提交的文件大大减少,比如 ***.suo 文件就已经被 git 忽略掉了。

vs对比git仓库 vs2012 git_暂存区_13

这时候如果直接点击“提交”命令,则出现如下提示窗口,意思是“还没有文件在暂存区中。需要暂存并马上提交所有文件吗?”

 

vs对比git仓库 vs2012 git_vs对比git仓库_14

这句话什么意思呢?这里涉及到 Git 的一个暂存区( stage )的概念,在 Git 中有三个保存文件的区域:

1)工作目录,就是你在硬盘上操作的这些目录和文件;

2)Git 版本库,就是前面说的 .git 隐藏文件夹。版本库里面又分成“暂存区”和真正的版本库。

a)暂存区(stage),其实相当于在提交之前的一个缓冲区;

b)版本库内容区,里面存放了文件的历史内容、各个分支等……

总之,将一个文件提交到版本库其实就是这样的流程——

1.工作目录 --> ( 2.暂存区 --> 3.版本库 )

为什么 Git 需要一个暂存区呢?这是为了方便 commit 提交过程中的反悔撤销等精细的操作。一旦加入暂存区(stage),即加入了 .git 中,但尚未提交到版本库,有了这个缓存,提交操作过程变得更加灵活。

总之,你的提交过程分成两步:先 add 加入 暂存区(stage),然后提交(commit)。如果用命令行表示,就是

第一步:git add fileName

第二步:git commit -m "提交描述文字"

这两个步骤对应到上图,就是左侧的两个窗口,左侧上部是工作目录,左侧下部是暂存区,两个窗口之间用“暂存(stage)”命令分隔,如下图。

vs对比git仓库 vs2012 git_git_15

你可以选定一个文件,点击途中左侧的箭头,将此文件加入暂存区;也可以点击右侧双箭头,将所有文件加入暂存区。

4)提交步骤b (真正提交commit)

将文件全部加入暂存区之后,如下图所示,请在右下窗口中输入提交说明信息,请务必认真填写,不要留空。每一次提交都要有明确的说明,这是以后版本浏览、管理的关键线索。

vs对比git仓库 vs2012 git_vs对比git仓库_16

填写“提交信息(m)”之后,就可以点击“提交”按钮了,之后会弹出如下窗口,表示提交成功。

vs对比git仓库 vs2012 git_版本库_17

注意:如果在上图出现之前跳出命令提示符框,里头的选项全选YES!

上面的操作非常直观,但如果用git命令行,其实只要简单的两行命令即可:

git add .

git commit -m "我的第一次提交"

两种方式各有优缺点。

这时候我们再看项目中文件的状态,文件前面的“+加号”变成了“锁”,表示文件已经成功纳入了版本库。

vs对比git仓库 vs2012 git_版本库_18

四、浏览版本库

1)准备工作,我们在版本中添加修改2个文件,然后提交2次。

2)如何查看历次提交记录?请打开“Git”菜单中的“Browse”命令,出现提交历史窗口,如下图

vs对比git仓库 vs2012 git_vs对比git仓库_19

窗口中显示了总共三次提交,在提交历史中右键,可以看到相关的操作,比如分支、标签(tag)等……

vs对比git仓库 vs2012 git_暂存区_20

如果在项目中右键,然后点击右键菜单的“Git(master) - History”,还可以图形化的查看提交历史

vs对比git仓库 vs2012 git_版本库_21

五、同步到远程服务器

因为 git 是分布式版本系统,每个人在自己本机上,都有一个 git 版本库的拷贝,为了和远程其他版本库同步,需要进行同步操作。

同步操作分成两种,一种是 pull 拉取,一种是 push 推送。

下面,我们将项目推送到 github 我们注册的项目上去。

1)我们点击菜单栏“Git - Push”,出现推送窗口,接下来点击“管理远程”,进行 github 项目的添加操作

vs对比git仓库 vs2012 git_git_22

点击“管理远程”,在左边新建一个档案库,然后依次填写

“名称”、

“Url地址”(一般是 git@github.com:yourName/yourProject.git 格式)(现在暂时在用的是git@github.com:LC1989/GitHelloWorld.git)

vs对比git仓库 vs2012 git_vs对比git仓库_23

接下来是关于密匙的获取,点击菜单栏“Git——Browse——远程——PuTTY——生成或者导入Key”,然后会出下下图的窗口

vs对比git仓库 vs2012 git_版本库_24

点击“Generate”,然后你需要将你的鼠标在上图空白处不停得挥动,直到完成密匙的获取!

然后点击“Save private key”,随便起个名字保存,无视关于叫你填写密码的提示;将上图中的一大串public key复制下来,

打开 Github 中 Account Setting 页面里的 SSH Public Key 选项卡, 选择 Add public key,将刚才复制的public key 复制进去,

随便起个名字,然后提交;回到vs2012,在远程档案库中选择“浏览”添加之前我们保存好的private key,然后点击“加载SSH密匙——测试连接——保存”;

系统开始抓取远程信息,成功之后,请切换到“默认拉取行为(获取以及合并)”,在右侧“远程档案库”下拉框中选择“GitHelloWorld”,

“默认合并”中填写“master”,最后点击“保存”。

 

vs对比git仓库 vs2012 git_暂存区_25

2)请关闭“远程档案库”窗口,再关闭“推送”窗口并重新打开(即重启“推送”窗口),会发现刚才设置的 gihub 远程库 GitHelloWorld 已经自动填充了——

 

vs对比git仓库 vs2012 git_暂存区_26

点击“推送”命令,开始推送,根据网速不同,可能需要几秒或几分钟时间,请耐心等待,最后会提示推送成功。

 

vs对比git仓库 vs2012 git_暂存区_27

这样就基本上完成了Git版本系统在vs2012中的搭建以及push代码到Github。