打造完美 Windows git 命令行 环境 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
egen
V2EX    程序员

打造完美 Windows git 命令行 环境

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

    前言

    由于 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     Solana     5461 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:33 PVG 09:33 LAX 17:33 JFK 20:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86