在《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.wojilu.com/Forum1/Topic/2227

Git 命令行(cygwin) + Git Extensions + Git Source Control Provider相关推荐

  1. 如何用git命令行上传本地代码到github

    如何用git命令行上传本地代码到github 2016年09月19日 16:10:36 阅读数:9337 注意:安装的前提条件是配置好git的相关环境或者安装好git.exe,此处不再重点提及 上传的 ...

  2. 命令行操作svn和git和git

    前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...

  3. git命令行完全解读

    BY 张建成(prettyEcho@github) 除非另行注明,页面上所有内容采用知识共享-署名(CC BY 2.5 AU)协议共享 原文地址deep.js , 欢迎 评论 和 star ?? 欢迎 ...

  4. 关于使用 git 命令行来和“码云”账号上的项目互通过程的基础步骤

    前提:已经有码云账号,电脑已经安装了git工具. (1)在码云账号上登陆自己的账号,创建一个新的项目. (2)在自己的本地磁盘下随便创建一个文件夹(例如起名为:mayun),用来存放从码云上拉下来的项 ...

  5. 【重要】使用Git命令行上传到GitHub上

    [本人GitHub账号:] 用户名:chenhongshuang 密码:shuangshuang6300 邮箱:2452420371@qq.com 进入GitHub账号后 1·新建项目文件名称例dem ...

  6. 如何使用git命令行上传项目到github

    参考文献: 如何使用git命令行上传项目到github 感谢楼主分享!

  7. GIT命令行的一些基本操作

    目录 ■基础 ■扩展 (重要) ■★★★===git Hub 时的命令行操作 (登录git[命令行]) ・★★===他命令  // Git ・★★===查看多个版本之间修改的代码 ・★===去掉以及保 ...

  8. Git命令行介绍和使用说明(持续更新)

    Git命令行介绍和使用说明(持续更新) Git命令行介绍和使用说明(持续更新) 文档名称 Git命令行介绍和使用说明会 创建时间 2012/8/23 修改时间 2012/8/23 创建人 Baifx ...

  9. linux tig不支持中文,tig — 让 git 命令行可视化

    tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. image 基础 安装 在 Mac 上最简单的方式是使用 Homebrew: brew inst ...

  10. gitBash快速清屏,git命令行操作,快速清屏,清屏

    ## ** gitBash快速清屏,git命令行操作,快速清屏,清屏 ** 快捷键 点赞去啊!!!!!!!!!!!!!

最新文章

  1. linux远程开机windows,从Linux到Windows的PowerShell远程处理
  2. Gradient Descent梯度下降(透彻分析)
  3. java调C接口_java通过jni调用C程序接口
  4. appium学习记录1
  5. C# WebService发布 未能创建类型 问题
  6. 【Spark工作原理】Spark任务调度理解
  7. Sql Server 当前日期第一天
  8. html制作网页案例代码
  9. con和com开头单词规律_英语单词速记小技巧
  10. UWP VS创建UWP应用项目
  11. python关键词排名批量查排名_Python 批量获取Baidu关键词的排名并入库
  12. 一百块组装可玩LOL的电脑
  13. 树莓派(4B)入门教程
  14. Ps钢笔工具抠图、更换背景及边缘优化步骤
  15. HLM(分层线性模型)处理“聚集性”问题!
  16. cocos2d-js 游戏源码
  17. 3060ti海力士测试
  18. 谁说 C/C++ 没有好的包管理器?这里来一沓!C/C++学习者建议收藏
  19. 【一次认识一个市场技术指标】之RSI(相对强弱指标)
  20. 软件测试全网最全复习总结-别杠,杠就是你对

热门文章

  1. 缺页异常(Page Faults) 和 Kernel Oops打印调用流程
  2. Java大数类自我需要掌握的
  3. 砸金蛋vue插件_小程序商城系统插件代码该如何写?
  4. xenserver 虚拟机扩容lvm磁盘分区的方法_vm虚拟机中linux Centos7.4硬盘扩容
  5. 快速求2的n次幂(防Time Limit Exceeded)
  6. 面向对象16:代码块、final关键字
  7. 并查集(ACWING三道题)
  8. java里if为真_Excel:如果所有条件都为真,则嵌套的IF语句返回所有真值
  9. C#网络编程----(二)启动、停止和观察进程
  10. 使用js实现鼠标放置时显示下拉列表