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

在《github快速上手》中,我们使用了官方推荐的 msysGit 命令行工具进行操作,这个工具在使用中文的时候有点问题(尤其配合github的时候)。今天我们采用另外的命令行工具cygwin,再加上vs插件,达到在 vs 中可视化操作的目标。

 

本文分成两部分,第一部分简述工具的安装流程,第二部分解释为什么使用这几个工具。 

 

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

 

 

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

 

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

 

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

 

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

 

1)安装 cygwin 命令行工具

 

cygwin 的官网在 http://www.cygwin.com/ ,直接下载地址是: http://cygwin.com/setup.exe 右键另存为即可。

然后双击这个下载下来的 setup.exe 文件,开始安装:

a) 选择下载方式 (Choose a Download Source):保持默认,即选择 Install from Internet;

b) 设置安装路径 (Select Root Install Directory): 保持默认;

c) 设置本地包的路径 (Select Local Parkage Directory): 保持默认(下载之后的包会解压到此处);

d) 选择联网方式 (Select Your Internet Connection): 保持默认,即选择 Direct Connection;

e) 选择一个下载源 (Choose a Download Site):请选择一个国内的镜像网址,这样速度可能较快。

f) 选择需要安装的包(Select Packages):点击列表中的+号可以展开,点击软件名称后面的 Default 可以切换到 Install,表示要安装这个


因为列表内容很多,你也可以在搜索框架中搜索如下几个软件包:

git: 这个就是我们这次安装的目的,当然要选择(如果在搜索框搜索git,出现的是git的上层目录名称Devel,请展开Devel 目录,才能看到git软件包);

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

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

vim: Git 缺省的编辑器。

选择了以上几个软件包之后,就可以进入下一步开始正式安装了。如果你的网速比较慢,可能需要几十分钟,请耐心等待。


整个安装流程,你也可以参考这篇文档http://images.china-pub.com/ebook190001-195000/194010/ch03.pdf (共25M,系《git权威指南》的第三章3.3部分,此PDF是官方试读样章,可以免费阅读)

 

2)安装 git extensions

 

【作用】

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

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

 

【安装方法】

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

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

git extensions 安装之后自带一个很全面的教程。

 

【配置】

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

 

 

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

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

 

另外,git extensions 会把 cygwin 默认的编辑器 vi 改成它自己的,你可以在“全局设置”中改回来。

 

补充1git extensions 的配置文件放在注册表中,如果卸载,这些配置仍然保留,你可以再次安装发生问题,可以检查注册表中相关配置项,是否有问题。

 

补充2:在安装 git extensions 过程中,我们勾选了 msysGit,现在安装完毕,其实你可以卸载 msysGit了,不过也可以保留,因为 msysGit 安装目录下自带 git 的所有命令的帮助文档。

 

 

3)安装 Git Source Control Provider

 

【作用】

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

项目网址:http://gitscc.codeplex.com/

源码:https://github.com/yysun/Git-Source-Control-Provider

视频教程:www.youtube.com/watch?v=efS0kKvfi6k

 

 

【安装方法】

vs菜单中点击“工具”的“扩展管理器”

  

然后在线搜索git,出现第一个结果就是 Git Source Control Provider,然后点击“下载”

 

 

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

 

 

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

  

 

 

第二部分:git 工具与中文问题

 

 

)为什么使用上面的方案

 

git 的使用,总体上是 命令行工具搭配图形化插件。

 

1)命令行工具有两种,我们没有选择 msysGit,而是选择了 cygwin

2)图形化插件,我们使用了 git extensions,没有选择 TortoiseGit  (当然两者可以并存);

 

主要原因在于,msysGit  TortoiseGit  对中文问题的支持不够。虽然大多数中文问题,比如列表显示、日志显示等可以修正的正常状态,比如——

这里

http://gotgit.github.com/gotgithub/10-appendix/040-install-on-windows-msysgit.html#msysgit-git 
和这里:http://www.cnblogs.com/baizx/archive/2010/08/09/1796120.html

 

但最终还是有一个遗憾:msysGit  TortoiseGit 不支持中文文件名和中文目录名。

 

当然,有达人直接修改了这两个软件,以方便使用中文:http://www.cnblogs.com/tinyfish/archive/2010/12/17.html但似乎仍然不够完美。

 

其实,只要把 msysGit  TortoiseGit  换掉,就可以彻底解决中文文件名的问题。

 

另外, git extensions 中一个小问题需要补充。

 

git extensions  commit 的时候无法stage(加入暂存区)中文文件名的问题】

 

如下图,在点击 "Stage" 将中文文件名加入暂存区的时候,会报错,git extensions 加入过程中最终读成了乱码。



 

解决方法是直接在文件上右键(这些右键功能是 Git Source Control Provider 提供的)Git  Add Files

 

然后在弹窗的窗口中点击“添加文件”(注意不是点击“显示文件”)。

其实此处的“添加文件”就是 commit 窗口中的 Stage 操作,添加文件等同于添加到暂存区(stage)。在commit窗口中之所以无法正常添加(stage),估计是因为它根据文件名添加,后一种方式是根据通配符"."进行添加,所以能够成功。

 

当然,你也可以直接在资源管理器中,文件夹上右键,如下图,点击 "Git Extensions" -> "Add Files"

 

最后,你也可以直接在 cygwin 的命令行中,用 "git add .这几个字母轻松搞定。

 

 

)其他需要注意的中文问题

 

1)在 cygwin 命令行中设置 git,让中文可以在命令行中顺利显示

git config --global core.quotepath false


2)创建文件的时候,请使用带BOM(byte order mark)utf-8格式

说明:如果不是utf-8,那么在github上显示就是乱码;而且如果迁移到mono上,也会乱码。

 

a)如果使用visual studio,默认建立的文件就是带BOMutf-8格式;

 

b)如果是在资源管理器里直接创建文件,比如创建文本文件,它的编码是系统编码,不是utf-8,所以请创建之后用记事本打开文件,再重新另存为utf-8格式;

 

c)在有些特殊场合(某些软件比如expression web)创建的文件,虽然是utf-8,但不带BOM,这时候需要使用工具将BOM显式加入。

比如notepad++,在菜单的“格式”命令中,请选择“转为 UTF-8 编码格式”,如下图所示——

 

如果使用vim,可以先后输入 set bomb  set fileencoding=utf-8 两个命令进行转换。


3)配置 cygwin 使用 UTF-8


 win7 下使用 cygwin,默认的 locale  utf-8,所以从 github 服务器上 pull 文件到本地,中文目录、中文文件名等等,都能正常显示,不用特别配置。

 但如果在在win2003下使用 cygwin,默认的 locale 有时候不是utf-8,所以从 github 服务器上 pull 文件到本地,中文文件名就变成乱码。此时,需要修改 locale  utf-8 格式。修改方法:

打开文件C:\cygwin\Cygwin.bat,加上下面蓝色那一行设置:

@echo off 

C:

chdir C:\cygwin\bin

set LANG=C.UTF-8

bash --login -i 

更多说明参考:http://www.cygwin.com/cygwin-ug-net/setup-locale.html

 

转自:

http://www.wojilu.com/Forum1/Topic/2227

posted @ 2012-05-02 20:23  shiningrise  阅读(8215)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css