用msys2替换msysgit


以前没折腾过相关的命令行环境,最多就是用msysgit提供的环境。因为看了点有毒的资料,我想在这个环境下安装新的程序,发现是不可能的。怎么办?折腾呗。于是无意间发现msys2这货。经过一番尝试简单记一下遇到的坑及解决办法。
直接安装了msys2非常简单,安装在E:\msys2下(win10一直在吃C盘没得选)
安装之后最好设置下镜像,因为某种尽人皆知的原因速度很慢。访问清华大学镜像站或者中科大镜像站的帮助页面,找到 MSys2 的相关链接:MSys2 镜像使用帮助(清华大学)MSYS2 镜像使用帮助(中科大),然后按照教程进行。

msys2集成了一个包管理器pacman(类似与yum或apt-get)
先验证下资源库是否正确:

pacman -Sy

更新软件包

pacman -Su

处警告后重启终端重新执行等待安装完成
安装git

pacman -S git

如果已经独立安装过git的windows版可以直接把用户目录下的.ssh目录复制到msys2的home/user_name目录下

如果git不显示中文文件名执行:

git config –-global core.quotepath false

更多git初始化配置:https://git-scm.com/book/zh/v1/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-%E9%85%8D%E7%BD%AE-Git

让msys2加载全局变量
方法1: 添加环境变量MSYS2_PATH_TYPE=inherit
方法2: 在启动时增加-use-full-path参数
显然方法1更加润物细无声。

IDEA系列IDE(phpstorm cloin)修改Terminal:

"E:\msys64\usr\bin\env.exe" CHERE_INVOKING=1 /usr/bin/bash --login -i

可以用跟原来git-bash一样的用法, 但是这样不能定位到项目目录:

"E:\msys64\usr\bin\bash" --login -i
msys2显示git分支信息
将下面代码添加到~/.bashrc,执行`source ~/.bashrc`或者重新打开新的shell即可。
# show git branch name
function git-branch-name() {
  git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3
}
function git-branch-prompt() {
  local branch=`git-branch-name`
  if [ $branch ]; then
    printf "(%s)" $branch
  fi
}
function get-PS1() {
  local branchname=`git-branch-prompt`
  printf "\n\e[32m%s\e[36m%s\e[35m %s \e[33m%s\e[36m %s \e[0m \n%s " "\u" "[\#]" "MSYS" "\w" $(git-branch-prompt) "\$"
}
function show-PS1() {
  if [ -d "$(pwd)/.git" ]; then
    export PS1=`get-PS1`
  else
    export PS1="\n\[\e[32m\]\u\[\e[36m\][\#]\[\e[35m\] MSYS \[\e[33m\w\]\[\e[0m\] \n\$ "
  fi
}
function cd(){
  builtin cd "$@" && show-PS1
}
show-PS1

在右键菜单中添加选项就像git-bash一样参考脚本:windows右键菜单添加msys2

主要参考的文章:
如何优雅地配置 Windows 环境下的 MSys2 + Git 开发环境?
如何优雅地配置 Windows 环境下的 MSys2 + Git 开发环境?(下)

Archives