惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
爱范儿
爱范儿
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
T
Tailwind CSS Blog
罗磊的独立博客
B
Blog
博客园_首页
A
About on SuperTechFans
有赞技术团队
有赞技术团队
V
V2EX
U
Unit 42
I
InfoQ
IT之家
IT之家
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
H
Help Net Security

晚花行乐

马克卡尼在2026年达沃斯论坛上的讲话(阅读材料) | 晚花行乐 鸡娃如何用力才是恰到好处 | 晚花行乐 读万卷书,行万里路的辩证关系 | 晚花行乐 反对培训机构掐尖招生 | 晚花行乐 小泽和建国会谈最后10分钟全文(阅读材料) | 晚花行乐 来看看 DeepSeek 怎么鸡娃 | 晚花行乐 谈谈基本功 | 晚花行乐 惠普 ProDesk SFF PC 各系列参数对比 | 晚花行乐 解决瘦客户机上安装 Debian 12 启动失败问题 | 晚花行乐 意拾喻言:老外写的文言文 | 晚花行乐 笠翁对韵中的典故(十三元) | 晚花行乐 谈谈中考取消四小门 | 晚花行乐 亚马逊云科技产品免费试用攻略(3) - 对象存储服务 | 晚花行乐 在 Windows 10 LTSC 版本上安装 WSL2 | 晚花行乐 Debian 12 的常用配置项 | 晚花行乐 在 Debian 12 上安装 Nvidia 显卡驱动程序 | 晚花行乐 解决 Debian 12 关机失败问题 | 晚花行乐 解决 VS Code 自动更新版本后卡在连接界面 | 晚花行乐 观看巴黎奥运会有感 | 晚花行乐 在 Windows10 上安装惠普旧打印机驱动程序 | 晚花行乐 欢迎关注公众号:晚花行乐 | 晚花行乐 如何编写拼写检查器 | 晚花行乐 亚马逊云科技产品免费试用攻略(2) - 云服务器 | 晚花行乐 Pandas 中 axis 参数的理解(附实例) | 晚花行乐 我打算命个名,叫什么什么 Manager | 晚花行乐 上海武康路历史建筑一览 | 晚花行乐 Python 实现简单的数学表达式解析并处理 | 晚花行乐 观看马拉松的感悟 | 晚花行乐 Python 保存 Cookies 到文件并再次读取 | 晚花行乐 如何为 Hugo 静态网站添加评论功能 | 晚花行乐
Powershell 在提示符中显示 git 分支信息 | 晚花行乐
2021-08-24 · via 晚花行乐

PowerShell 自带的提示符不够美观,影响工作效率。本文介绍一种自定义 PowerShell 命令提示符中填入 git 分支的方法。

效果展示

正如 Powershell 修改提示符的文字内容和颜色 一文中所说,借助 prompt 函数的灵活编程,我们可以获取 iterm 中的 git 信息,并显示在提示符后方,效果如下图。

开源方案 posh-git

有一套现成的开源方案: posh-git ,可以在命令行上显示分支名和当前目录树的改动情况。但是这个库就像航空母舰,功能虽强大,但是 load 需要稍多时间。如果仅仅需要显示分支名,有些得不偿失。其实完全可以用短短几行代码实现,下面介绍实现的方法:

原理解释

如果在 prompt 函数中获取到分支名,就可以更改提示符的显示。prompt 函数在 正如 这篇文章 中介绍过。

在获取分支名之前,首先应该判断当前目录是否由 git 跟踪。

判断当前目录是否 git 跟踪

可以用 git rev-parse 命令判断当前目录是否 git 跟踪。

如果命令返回值为 0 ,即表示当前目录由 git ;非零的返回值表示当前目录没有被 git 跟踪,并且会向标准输出打印一行错误信息。

为了不显示这行错误信息,按照 Linux 的习惯,我们需要把 git rev-parse 命令的输出重定向到 /dev/null 中去,在 Powershell 中,有一个函数 Out-Null ,可以实现类似功能。所以完整一行的写法为:

git rev-parse | Out-Null

判断命令

如果当前目录是 git 跟踪的,就可以使用 git branch 命令获取分支名。这里需要加一个判断。

Powershell 中有一个特殊变量 $? ,和 Bash 类似,如果前面的命令执行成功了,这个变量值就是 true,反之就是 false:

# 其他命令

if($?){
}

获取分支名

我们都知道,显示本地分支列表的命令是 git branch ,如果再加上参数 --show-current ,可以只显示当前分支名,而这正是我们需要的。

git branch --show-current --no-color

--no-color 参数正如其名,显示不带颜色的文字。

最终结果

完整的代码片段如下:

function Prompt {
	$git_branch = ""
	git rev-parse | Out-Null

	if($?){
		$git_branch = " $(git branch --show-current --no-color)"
	}

    $pattern = $env:userprofile -replace '\\', '\\'
    $promptString = "$(Get-Location)" -replace $pattern, "~"
    "`e[1;32m" + $promptString +"`e[1;36m"+ $git_branch + "`e[m "
}

这是我自己研究的结果,如果有更好的方法,欢迎跟我联系,提供好的建议。

各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

精彩评论