欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

扩展 git bash 命令的三个技巧(下) (1)

最编程 2024-05-26 18:58:05
...


剧情回顾

上一节中我们已经介绍了两种方式来扩展 git bash 命令,解决了一般性命令不足的问题,最后我们还留下了一个疑问,如果两种方式均无法扩展某些命令又该怎么办?

再介绍最后一个大招之前,我们首先来回忆一下前面两种扩展方式.

  • bash 不足 cmd 来凑

git bash 命令行终端和 windows 系统自带的 cmd 命令行终端互为补充,某些 git bash 命令没有并不意味着 cmd也没有,所以遇到 git bash 无某些命令的情况下,首先应该去看看 cmd 有没有这个命令.

如果碰巧 cmd 存在该命令,那么既可以在 cmd 中直接运行该命令,也可以在 git bash 中借助 winpty+cmd原生命令 方式调用该命令.

示例:

F:\workspace\git-bash-extend>tree
卷常用的文件夹 PATH 列表
卷序列号为62AE-62CA
F:.
├─extend-cmd
├─extend-gitforwindows-sdk
└─extend-gnuwin

cmd 命令行中有 tree 命令,不过该命令的后缀名是 .com 而不是 .exe.

Administrator@snowdreams1006 MINGW64 /f/workspace/git-bash-extend
$ winpty tree.com
卷常用的文件夹 PATH 列表
卷序列号为62AE-62CA
F:.
├─extend-cmd
├─extend-gitforwindows-sdk
└─extend-gnuwin

git bash 命令行中没有 tree 命令,通过调用 cmd 命令行中的 tree.com 命令变相支持 tree 命令.

  • bash 没有 gnuWin 填补

如果 git bash 命令行中没有的命令, cmd 也没有的话,那么应该想办法扩展 git bash 命令,最简单的方式是找同源的命令.

正所谓"物以类聚人以群分",如果有现成的命令可以直接扩展过来,岂不是很方便,幸运的是, gnuwin 开源项目适用于 git!

我们可以从 gnuwin32 项目下载所需的扩展命令并复制到 git bash 的安装位置下面的 /usr/bin 目录下即可轻松扩展更多命令.

示例:

Administrator@snowdreams1006 MINGW64 /f/workspace/git-bash-extend
$ tree
.
├── extend-cmd
│   └── cmd.md
├── extend-gitforwindows-sdk
│   └── gitforwindows-sdk.md
└── extend-gnuwin
└── gnuwin.md
3 directories,3 files

轻松扩展的 tree 命令,功能更强大更像 linux 系统的 tree 命令.

回顾问题

如果没有第三方现成的命令文件供我们轻松扩展,意味着前面两种方式均已失效!

如果真的遇到这种情况,一般会有两种方式来解决问题.

  • 直接放弃,寻找新的替代方案
  • 定制开发,创造自定义解决方案

两种方案没有谁对谁错,应该根据自身情况选择适合自己的哪一种,针对 git bash 命令不足的问题,我们具体分析一下是否可行.

直接放弃,另寻新欢

如果选择方案一,意味着我们需要放弃 git bash 命令行工具并寻求新的替代方案,也就是说我们首先需要弄清楚两个问题.

  • 能不能直接放弃 git bash 命令行

GitBash 是命令行工具,是为了使用 git 而默认提供的命令行工具,与此同时, GitBash 还有一个双胞胎兄弟叫做 GitGUI 图形化工具.


89.png


由此可见, GitBash 并不是 Git 的关键核心,可有可无的工具类而已.


90.jpg


  • 寻找哪一款替代方案?

既然已经决定放弃了 git bash 命令行,那么我们就要找一个功能更加强大的命令行工具来替代 git bash.

但是, windows 始终是 windows ,是不可能真正变成 linux 系统的,所以我们要寻找的第三方工具充其量也是一种模拟系统而已.

市面上, windows 的命令行工具有很多,有些是单纯的命令行工具有的是虚拟系统工具,但是不管怎么样,我们这一次要选择的命令行工具一定要满足以下几点.

  • 方便集成 git 服务,这是初衷,不可违背.
  • 命令行语法类似 linux 语法,降低学习成本.
  • 自带包安装工具,这是最关键部分也是 git bash 没有提供的部分.
  • 安装配置简单,无需繁琐的配置即可轻松上手.

根据以上几点,推荐一款 Babun 工具,正如官方标语宣传的那样,一款一会爱上的 WindowsShell .


91.jpg


Babun : a Windows shell you will love!

当然除了上述基本要求外,再谈一谈为什么推荐这一款软件?

  • 安装简单,下载安装包执行安装脚本自动安装配置.
  • 自带包管理工具,且静默安装无需过多交互式询问.
  • 基于 Cygwin 预配置大量常用插件,包括 gitshell.
  • 默认终端模拟器是 Mintty,支持两种类型的 shell,分别是 bashzsh.

翻译成人话就是: BabunGitBash 一脉相承,不仅是亲戚还是近亲, BabunGitBash 体积更大,功能更强.

babun 初体验

下载 babun 并解压缩,然后双击 install.bat 脚本进行自动化安装.


92.jpg


自动安装成功后会自动创建桌面快捷方式并输出 babun 基本信息.


93.jpg

配置你的新欢

  • 配置 git

默认已经集成 git ,因此我们可以像 git bash 那样使用 git.

{~}» git --version                                                                          ~
git version 2.1.4

接下来进行一些关于 git 的常规配置,彻底拥抱 babun.

# 添加用户名和邮箱
git config --global user.name "your name"
git config --global user.email "your@email.com"
# gitalias 插件提供的 git 别名配置项
gitalias['alias.cp']='cherry-pick'
gitalias['alias.st']='status -sb'
gitalias['alias.cl']='clone'
gitalias['alias.ci']='commit'
gitalias['alias.co']='checkout'
gitalias['alias.br']='branch'
gitalias['alias.dc']='diff --cached'
gitalias['alias.lg']="log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %Cblue<%an>%Creset' --abbrev-commit --date=relative --all"
gitalias['alias.last']='log -1 --stat'
gitalias['alias.unstage']='reset HEAD --'
  • 更改默认 shell
1. # 查看当前shell类型: zsh
2. {~}» babun shell                                                                            ~
3. /bin/zsh
4. # 切换当前shell类型: zsh -> bash
5. {~}» babun shell /bin/bash                                                                  ~
6. /bin/zsh
7. /bin/bash
• 自定义配置

命令行窗口内通过命令运行的配置命令一般都是临时性的,下次电脑重启或者新开命令行窗口就会失效,如果想要永久性生效,一般会将配置写入到配置文件中, babun 也不例外,配置文件默认存放于 ~/.babunrc

# JVM options
export JAVA_OPTS="-Xms128m -Xmx256m"
# Modify these lines to set your locale
export LANG="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
# Uncomment these lines to the set your machine's default locale (and comment out the UTF-8 ones)
# export LANG=$(locale -uU)
# export LC_CTYPE=$(locale -uU)
# export LC_ALL=$(locale -uU)
# Uncomment this to disable daily auto-update & proxy checks on startup (not recommended!)
# export DISABLE_CHECK_ON_STARTUP="true"
# Uncomment to increase/decrease the check connection timeout
# export CHECK_TIMEOUT_IN_SECS=4
# Uncomment this lines to set up your proxy
# export http_proxy=http://user:password@server:port
# export https_proxy=$http_proxy
# export ftp_proxy=$http_proxy
# export no_proxy=localhost

如果当前用户家目录下没有 .babunrc 配置文件,运行 touch~/.babunrc 自行创建该配置文件即可.

推荐阅读