V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
egen
V2EX  ›  程序员

打造完美 Windows git 命令行 环境

  •  5
     
  •   egen · 2014-12-16 01:47:39 +08:00 · 51912 次点击
    这是一个创建于 3418 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    由于 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 命令重置一下屏幕即可。

    参考

    28 条回复    2017-03-18 11:53:37 +08:00
    emric
        1
    emric  
       2014-12-16 03:03:15 +08:00
    现成解决方案 : Cmder ...
    bitbegin
        2
    bitbegin  
       2014-12-16 07:23:09 +08:00 via Android
    是啊,cmder吧
    wolfan
        3
    wolfan  
       2014-12-16 08:30:36 +08:00 via Android
    不是有现成的portable么?
    装一个不就好了的说。
    Marble
        4
    Marble  
       2014-12-16 08:50:36 +08:00 via iPhone
    在用Conemu+Cygwin
    gelupk
        5
    gelupk  
       2014-12-16 08:52:54 +08:00
    直接用cmder啊
    mozartgho
        6
    mozartgho  
       2014-12-16 09:02:38 +08:00
    Windows下除了TortoiseGit还有别的更好的选择吗?
    Delbert
        7
    Delbert  
       2014-12-16 09:07:26 +08:00 via Android
    一直gitscm搞定啊
    Delbert
        8
    Delbert  
       2014-12-16 09:08:53 +08:00 via Android
    不懂为什么还要gui,git配合alias多好啊
    panxianhai
        9
    panxianhai  
       2014-12-16 09:12:26 +08:00
    @gelupk cmder在git commit的时候不能git commit -m "",我这里需要git commit,然后写注释..,另外git push 需要在remote里面加上用户名和密码,否则识别不了。
    tabris17
        10
    tabris17  
       2014-12-16 09:20:34 +08:00
    复杂的操作用 cygwin+git
    简单的日常操作用乌龟git
    gdm
        11
    gdm  
       2014-12-16 09:22:50 +08:00
    为什么这么复杂,gitscm不就行了吗?用railsinstaller更是直接配置好git+ruby
    vietor
        12
    vietor  
       2014-12-16 09:42:34 +08:00
    感觉msysgit就已经够完美的了。git-gui与gitk能够做很多事,剩下直接命令行解决就行了。
    mahone3297
        13
    mahone3297  
       2014-12-16 09:43:58 +08:00
    直接下载git win版不行?
    guotie
        14
    guotie  
       2014-12-16 09:44:47 +08:00
    最好的工具没讲:
    git-credential-winstore
    loudis
        15
    loudis  
       2014-12-16 09:46:17 +08:00
    git 缺省推荐的 git-scm 的git bash不就够用吗?你这个多出来什么了
    ChiangDi
        16
    ChiangDi  
       2014-12-16 10:22:47 +08:00 via Android
    杀手级功能:支持右键粘贴,支持窗口最大化。。。。
    zhengkai
        17
    zhengkai  
       2014-12-16 10:45:31 +08:00
    都用 Windows 了,还要追求什么完美……
    vfasky
        18
    vfasky  
       2014-12-16 10:52:32 +08:00 via iPhone
    cmder +1
    besto
        19
    besto  
       2014-12-16 11:00:23 +08:00
    @loudis +1 的飘过
    sarices
        20
    sarices  
       2014-12-16 11:17:52 +08:00
    vagrant + virtualbox+centos 共享目录
    ijse
        21
    ijse  
       2014-12-16 11:49:28 +08:00
    windows下的替代命令行,我用Console2 官方的程序可能会有中文问题,不过都能解决~
    半透明,多标签,快捷键设定都挺好, 可设定Shift+鼠标选择复制文字,可随意调整窗口大小,很方便

    目前感觉很够用。我这儿有直接配置好的程序,有要的可以找我要。

    装Git的时候,有一步提示如何Adjust your PATH environment, 选第三项, 这样在cmd里就可以直接使用git以及其它Unix命令了。

    希望对大家有帮助 。
    beginor
        22
    beginor  
       2014-12-16 21:48:30 +08:00 via iPad
    我还是喜欢GUI,试试SmartGit吧😀
    mingyun
        23
    mingyun  
       2015-01-11 19:42:43 +08:00
    mark了,git的shell也不错呀
    tekin
        24
    tekin  
       2015-01-21 15:51:25 +08:00
    win7上git bash响应速度很慢,有解决办法吗? 还是换cygwin+git
    Cu635
        25
    Cu635  
       2015-09-11 20:41:10 +08:00
    现在直接使用 git-for-windows 这个项目就行了。 msysgit 已经停止维护了。

    图形界面用 tortoisegit
    hongfeiyu
        26
    hongfeiyu  
       2016-06-04 09:28:28 +08:00
    ```目录下有个类似“ PortableGit_ed44d00daa128db527396557813e7b68709ed0e2 ”的目录,进入该目录。```
    这个目录每次都变怎么办
    DuXing
        27
    DuXing  
       2017-03-18 11:41:38 +08:00
    在 conEmu 下,写 commit 时 ( git commit -m ),中文显示乱码怎么办?
    egen
        28
    egen  
    OP
       2017-03-18 11:53:37 +08:00
    @DuXing #27
    现在已经转向使用 cmder , git commit 建议结合 vim 使用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1185 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:21 · PVG 02:21 · LAX 11:21 · JFK 14:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.