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 改成它自己的,你可以在“全局设置”中改回来。
补充1:git 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,默认建立的文件就是带BOM的utf-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
转自: