设为首页 收藏本站
查看: 1160|回复: 0

[经验分享] Git 命令行(cygwin) + Git Extensions + Git Source Control Provider

[复制链接]

尚未签到

发表于 2018-1-14 23:47:39 | 显示全部楼层 |阅读模式
  在《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,表示要安装这个
DSC0000.jpg

  因为列表内容很多,你也可以在搜索框架中搜索如下几个软件包:
  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
DSC0001.jpg

  第一个是:“用户运行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菜单中点击“工具”的“扩展管理器”
DSC0002.jpg

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

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

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

  第二部分: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 加入过程中最终读成了乱码。
DSC0006.jpg

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

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

  其实此处的“添加文件”就是 commit 窗口中的 Stage 操作,添加文件等同于添加到暂存区(stage)。在commit窗口中之所以无法正常添加(stage),估计是因为它根据文件名添加,后一种方式是根据通配符"."进行添加,所以能够成功。
  当然,你也可以直接在资源管理器中,文件夹上右键,如下图,点击 "Git Extensions" -> "Add Files"
DSC0009.jpg

  最后,你也可以直接在 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 编码格式”,如下图所示——
DSC00010.jpg

  如果使用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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435176-1-1.html 上篇帖子: 【过程改进】总结大中小型项目的git流程 下篇帖子: Android Studio配置Git及Git文件状态说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表