您的位置:首页 > 其它

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

2016-07-10 17:20 393 查看
在《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

 

转自:
http://www.cnblogs.com/shiningrise/archive/2012/05/02/2479517.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: