什么是GitBash
GitBash
是 Windows
系统安装 Git
时默认集成的命令行工具,提供运行 Git
命令的集成环境.
如果不熟悉命令行操作的话, GitBash
还有个双胞胎兄弟叫做 GitGUI
,默认情况下两兄弟应该会同时安装(除非你特意更改了安装 Git
时的配置项).
如果选中文件右键没有弹出 GitBashHere
和 GItGUIHere
选项的话,很可能安装 Git
时并没有集成这两个工具,请检查安装 Git
时下图是否已经勾选!
不论是命令行工具还是图形化工具,两者都是提供服务的一种方式,不应该是排他性而应该是互补性.
大家在实际工作中应该灵活运用,工具只是工具而已!
当然,如果涉及到某些命令而恰恰又没有相应的图形化选项时,那么图形化工具此时便无能为力,这正是命令行工具大显身手的好机会!
GitBash
和cmd
的关系
git bash
是命令行工具,提供了内置终端,不仅可以运行 git
命令还可以运行某些基本的 linux
命令.
但是,用过 Windows
电脑的小伙伴可能或多或少都听说过 Windows
电脑默认也自带了一个命令行工具,也就是 cmd
工具.
虽然唤出 cmd
的方式不如 git bash
那么直观方便,但是调用快捷键 Win+R
然后输出 cmd
也是调出命令行工具的,让我们一睹芳容 (个人觉得样式丑极了)!
既然两者都是命令行工具,那么为什么 GitBash
要重复造轮子?直接用 cmd
不行吗?
无论是 GitBash
还是 cmd
命令行工具,两者均支持 Git
命令,所以两者用哪一个都可以.
既然已经重复造好了轮子,要么比原来的轮子强,要么和原来的轮子有些不一样, GitBash
轮子自然也理应如此吧?
首先两者均支持 Git
命令,体现不出 GitBash
轮子的优势,那我们就抛开 Git
命令不谈,仅仅从普通命令入手感受下两个轮子到底有什么不同之处.
下面我们以创建目录以及文件为例,演示下两者如何操作.
首先闪亮登场的是 GitBash
命令行,将会新建 git-bash
目录并新建一些文件,详情参考下面命令.
Administrator@snowdreams1006 MINGW64 /f/workspace # 列出当前工作空间的文件目录 $ ls backup/ private-cloud-backup/ snowdreams1006.github.io/ Administrator@snowdreams1006 MINGW64 /f/workspace # 递归创建 `test/git-bash` 目录 $ mkdir -p test/git-bash Administrator@snowdreams1006 MINGW64 /f/workspace # 切换到 `test/git-bash` 目录 $ cd test/git-bash Administrator@snowdreams1006 MINGW64 /f/workspace/test/git-bash # 创建 `git-bash.md` 文件 $ touch git-bash.md Administrator@snowdreams1006 MINGW64 /f/workspace/test/git-bash # 输出指定内容到 `git-bash.md` 文件 $ echo "created by git bash" > git-bash.md Administrator@snowdreams1006 MINGW64 /f/workspace/test/git-bash # 查询 `git-bash.md` 文件内容 $ cat git-bash.md created by git bash Administrator@snowdreams1006 MINGW64 /f/workspace/test/git-bash # 创建 `delete.md` 文件 $ touch delete.md Administrator@snowdreams1006 MINGW64 /f/workspace/test/git-bash # 列出当前工作空间下的文件目录 $ ls delete.md git-bash.md Administrator@snowdreams1006 MINGW64 /f/workspace/test/git-bash # 删除 `delete.md` 文件 $ rm delete.md Administrator@snowdreams1006 MINGW64 /f/workspace/test/git-bash # 列出当前工作空间下的文件目录 $ ls git-bash.md
git bash
表演告一段落,现在上场的是 cmd
,想要实现和 git bash
类似的效果,又会有一番什么样的操作,让我们拭目以待!
# 列出当前工作空间的文件目录 F:workspaceestcmd>dir 驱动器 F 中的卷是 常用 卷的序列号是 62AE-62CA F:workspaceestcmd 的目录 2019/05/17 周五 17:32 <DIR> . 2019/05/17 周五 17:32 <DIR> .. 0 个文件 0 字节 2 个目录 94,247,124,992 可用字节 # 递归创建 `testcmd` 目录 F:workspace>mkdir testcmd # 切换到 `testcmd` 目录 F:workspace>cd testcmd # 输出指定内容并创建 `cmd.md` 文件 F:workspaceestcmd>echo "created by cmd" > cmd.md # 查询 `cmd.md` 文件内容 F:workspaceestcmd>more cmd.md "created by cmd" # 创建 `delete.md` 文件 F:workspaceestcmd>echo nul > delete.md # 列出当前工作空间下的文件目录 F:workspaceestcmd>dir 驱动器 F 中的卷是 常用 卷的序列号是 62AE-62CA F:workspaceestcmd 的目录 2019/05/17 周五 17:39 <DIR> . 2019/05/17 周五 17:39 <DIR> .. 2019/05/17 周五 17:36 19 cmd.md 2019/05/17 周五 17:39 6 delete.md 2 个文件 25 字节 2 个目录 94,247,026,688 可用字节 # 删除 `delete.md` 文件 F:workspaceestcmd>del delete.md # 列出当前工作空间下的文件目录 F:workspaceestcmd>dir 驱动器 F 中的卷是 常用 卷的序列号是 62AE-62CA F:workspaceestcmd 的目录 2019/05/17 周五 17:40 <DIR> . 2019/05/17 周五 17:40 <DIR> .. 2019/05/17 周五 17:36 19 cmd.md 1 个文件 19 字节 2 个目录 94,247,026,688 可用字节
现在 git bash
和 cmd
两个命令行工具都顺利完成了此次比赛,虽然具体命令有些不同,但是殊途同归,条条大路通罗马,不是吗?
通过上述比赛实验,不难看出: git bash
命令更贴近 linux
命令, cmd
命令则是纯纯的 windows
命令.
所以 git bash
重复造轮子可能是为了让我们在 windows
上获得比较好的 linux
体验吧,毕竟 cmd
那一套逻辑和 linux
逻辑差别真心不小呢!
当然,如果你熟悉 windows
命令行语法那最好使用 cmd
命令行,不过如果你更熟悉 linux
命令行语法那当然建议使用 git bash
命令行.
总之,适合自己的才是最好的,两者也可以相互结合,优势互补.
GitBash
为主,cmd
为辅
正常情况下,命令行操作一般适合 linux
用户, windows
用户可能更熟悉也更偏爱图形化工具!
下面假设我们都是 linux
用户,比较习惯于 linux
语法,想要在 windows
电脑上获得比较好的 linux
体验, 那么命令行首选 git bash
工具.
实际上, git bash
命令行内置终端是 mintty
,而 mintty
终端模拟器并不能完全取代cmd
命令行.