打造完美 Windows git 命令行 环境

2014-12-16 01:47:39 +08:00
 egen

前言

由于 A B C D 等原因必须在 Windows 下工作,又需要使用 git 环境,用了一圈 git gui 客户端,觉得还是原生的 git 命令行更好,所以决定在 Windows 下打造一个接近 linux 的 git 命令行环境。

准备

  1. Github for Windows(GHfW): https://windows.github.com/ 传说中最好的 git 客户端
  2. ConEmu: https://github.com/Maximus5/ConEmu/ 极其优秀的 Windows 命令行替代品,最常用的杀手级功能有:支持窗口最大化,直接拖动选择,右键粘贴。其他功能还有一大堆,有兴趣的可以好好研究一下。

安装配置

安装ConEmu

ConEmu 安装使用都非常简单,下载压缩包解压运行对应平台的 ConEmu.exe 即可(64位运行ConEmu64.exe)。

配置ConEmu

使用 ConEmu 替换默认的 cmd.exe 命令行环境,ConEmu 使用了很长时间了,软件本身非常稳定,而且基本没什么兼容性问题,可以安全地替代 cmd.exe。

打开 ConEmu,在界面左下角点右键进入设置菜单:Intergration > Default term。选上“Force ConEmu as default terminal for console applications.”,保存设置。

安装 GHfW

GHfW 依赖 .net framework 4.5 环境,安装程序会自动下载并安装,其中 C 盘需要 2GB 的可用空间,.net 安装完成后需要重启系统,接着自动安装 GHfW,安装完成后桌面会有 GitHub 和 Git Shell 两个应用。

安装常见问题

  1. 如果安装 GHfW 安装过程中出现无法下载文件,可能是网络访问amazon s3服务器速度太慢,请配置代理进行安装。
  2. 如果安装完成后报无法验证文件的错误,请尝试放开 windows 的防火墙并用管理员身份运行安装程序。防火墙配置步骤为:打开“控制面板\所有控制面板项\Windows 防火墙\允许的程序”,点击“允许运行另一程序...”,将 GHfW 添加进去即可。

配置 Git Shell

Git Shell 有几种模式:Windows 命令行,Git Bash和Power Shell,默认是 Power Shell。这里我选用 Git Bash 模式,这个模式最接近原生的 Linux 命令行,但由于 Git Bash 使用 Windows 命令行进行启动,所以我们将其配置成使用 ConEmu 进行启动,具体步骤如下:

  1. 右键点击 Git Shell 快捷方式,选属性,点击“打开文件位置”跳转到 GHfW 安装目录。
  2. 目录下有个类似“PortableGit_ed44d00daa128db527396557813e7b68709ed0e2”的目录,进入该目录。
  3. 找到 sh.exe,将该程序创建快捷方式,比如创建到桌面。
  4. 打开快捷方式的属性,在“快捷方式”标签的“目标”,在路径后面添加参数:--login -i
  5. 其他额外设置,比如把起始位置配置到常用工作目录,设置图标,锁定到任务栏等。

经过以上配置,打开快捷方式应该可以进入和 Linux 几乎完全一样的命令行环境进行 git 命令的各种操作了。
进入各个磁盘可以通过 cd /c, cd /d 的方式直接进入,直接 ls / 是看不到 /c /d 等目录的。

配置 Git Editor

安装 GHfW 之后默认调用的 editor 是 GitPad,但是我没运行成功,单独安装也不行,不知道为何,索性切换到 vim。相关命令为:

git config --global core.editor vim

配置中文支持

虽然现在已经可以运行 git 命令行,但是对中文处理有很多问题,工作中避免不了处理中文,所以下面进行中文相关的配置。
对于中文文件,个人习惯文件内容统一使用 utf-8 编码,这样在多平台使用的时候可以避免很多问题。

Git 中文文件名支持

git add 的时候,中文会显示成"“\344\270\255\346\226\207.txt",使用如下命令进行配置:

git config --global core.quotepath false

ls 显示中文

使用 vim 编辑 ~/.bashrc,添加以下内容(如没有则新建一个):

export LANG=en_US.utf-8
alias ls='ls --show-control-chars --color=auto'

vim 中文支持

使用 vim 编辑 ~/.vimrc,添加以下内容:

set encoding=utf-8
set termencoding=gbk

小技巧

工作的时候经常需要在各个目录之间跳转,可以通过环境变量对目录进行缩写,方便地在多个目录直接切换。
在 ~/.bashrc 添加:

export wd="/d/Projects/MyProject/git"
export doc="/d/Projects/documents/"

以后只需要用 cd $wd, cd $doc 即可进入对应目录。

已知问题

  1. 进入 vim 后出来会导致 ConEmu 无法用鼠标直接选择文字。临时解决方式是:运行 clear 命令重置一下屏幕即可。

参考

52134 次点击
所在节点    程序员
28 条回复
emric
2014-12-16 03:03:15 +08:00
现成解决方案 : Cmder ...
bitbegin
2014-12-16 07:23:09 +08:00
是啊,cmder吧
wolfan
2014-12-16 08:30:36 +08:00
不是有现成的portable么?
装一个不就好了的说。
Marble
2014-12-16 08:50:36 +08:00
在用Conemu+Cygwin
gelupk
2014-12-16 08:52:54 +08:00
直接用cmder啊
mozartgho
2014-12-16 09:02:38 +08:00
Windows下除了TortoiseGit还有别的更好的选择吗?
Delbert
2014-12-16 09:07:26 +08:00
一直gitscm搞定啊
Delbert
2014-12-16 09:08:53 +08:00
不懂为什么还要gui,git配合alias多好啊
panxianhai
2014-12-16 09:12:26 +08:00
@gelupk cmder在git commit的时候不能git commit -m "",我这里需要git commit,然后写注释..,另外git push 需要在remote里面加上用户名和密码,否则识别不了。
tabris17
2014-12-16 09:20:34 +08:00
复杂的操作用 cygwin+git
简单的日常操作用乌龟git
gdm
2014-12-16 09:22:50 +08:00
为什么这么复杂,gitscm不就行了吗?用railsinstaller更是直接配置好git+ruby
vietor
2014-12-16 09:42:34 +08:00
感觉msysgit就已经够完美的了。git-gui与gitk能够做很多事,剩下直接命令行解决就行了。
mahone3297
2014-12-16 09:43:58 +08:00
直接下载git win版不行?
guotie
2014-12-16 09:44:47 +08:00
最好的工具没讲:
git-credential-winstore
loudis
2014-12-16 09:46:17 +08:00
git 缺省推荐的 git-scm 的git bash不就够用吗?你这个多出来什么了
ChiangDi
2014-12-16 10:22:47 +08:00
杀手级功能:支持右键粘贴,支持窗口最大化。。。。
zhengkai
2014-12-16 10:45:31 +08:00
都用 Windows 了,还要追求什么完美……
vfasky
2014-12-16 10:52:32 +08:00
cmder +1
besto
2014-12-16 11:00:23 +08:00
@loudis +1 的飘过
sarices
2014-12-16 11:17:52 +08:00
vagrant + virtualbox+centos 共享目录

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/154202

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX