三招教你轻松扩展 git bash 命令(下)(一)

简介: 在上一节中我们已经介绍了两种方式来扩展 git bash 命令,解决了一般性命令不足的问题,最后我们还留下了一个疑问,如果两种方式均无法扩展某些命令又该怎么办?再介绍最后一个大招之前,我们首先来回忆一下前面两种扩展方式.


剧情回顾

上一节中我们已经介绍了两种方式来扩展 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 自行创建该配置文件即可.

相关文章
|
3月前
|
存储 开发工具 git
|
2天前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
15 1
[Git]入门及其常用命令
|
3月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
65 0
|
25天前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
89 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
5天前
|
开发工具 git 开发者
|
5天前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
24 0
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
2月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7
|
2月前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
2月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
本文介绍 Git 的核心概念,如仓库、提交、分支与合并,并提供了常用命令,如初始化仓库 (`git init`)、提交更改 (`git commit -m &quot;Commit message&quot;`)、拉取 (`git pull`) 和推送 (`git push`) 等。此外,还分享了高级技巧,如撤销提交 (`git revert &lt;commit&gt;`)、交互式暂存 (`git add -i`) 和使用别名简化命令 (`git config --global alias.ci commit`) 等,帮助开发者提升效率。无论是初学者还是资深开发者,都能从中受益。