当前位置:   article > 正文

power shell不显示git分支_powershell 显示git分支

powershell 显示git分支

ps1 文件类似 linux 的 ~/.profile 文件,在 shell 初始化时会预先执行。在 Powershell 中, ps1 文件的路径保存在 $Profile 变量中,输入 echo $Profile 命令能看到它的绝对路径:

编辑这个文件,就能使Powershell按照我们的要求初始化 

当然了,最起初的时候是没有这个文件的,需要我们按照对应目录手动去创建

可以使用命令(安装了sublime Text 并添加了环境变量Powershell 有一个特殊的函数: prompt 函数,这个函数规定了提示符的内容和外观。默认的 prompt 函数规定了提示符的默认外观,也就是这样:) 

> subl $profile

Powershell 有一个特殊的函数: prompt 函数,这个函数规定了提示符的内容和外观。默认的外观就是我们所见的,这里就不赘述了!

通过 prompt 函数的返回值我们就能自定义提示符。返回值可以是固定的字符串,也可以是 powershell 提供的函数,例如

  1. $(Get-Date) # 获取当前时间
  2. $(Get-Location) # 获取当前目录

大部分函数返回值是 Object 类型,并不是字符串格式,用双引号可以强制转换为字符串类型,具体怎么操作,详情百度!

当然了可能会碰到  ...\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1这个文件无法加载,如下图示:

以管理员身份运行Windows Powershell

输入:

  1. get-ExecutionPolicy # 查看系统执行策略状态
  2. # 返回 Restricted
  3. set-executionpolicy remotesigned # 修改执行策略状态
  4. get-ExecutionPolicy # 查看系统执行策略状态
  5. # 返回 remotesigned

 你会发现问题解决!

让你的power shell 显示git 分支

开源方案 posh-git

有一套现成的开源方案: posh-git ,可以在命令行上显示分支名和当前目录树的改动情况。但是这个库就像航空母舰,功能虽强大,但是 load 需要稍多时间。如果只需要显示分支名,可以稍微用几行代码即可实现

判断当前目录是否 git 控制

判断当前目录是否 git 控制的方法可以用 git rev-parse 命令,如果返回值为 0,即表示当前目录由 git 控制;非零的返回值表示当前目录没有被 git 控制,并且会向标准输出打印一行错误信息。

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

git rev-parse | Out-Null

判断命令

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

Powershell 中有一个特殊变量 $? ,如果他前面的命令执行成功了,这个变量值就是true,反之就是false,所以可以在上面语句的后方判断这个变量的值。

获取分支名

获取分支名的命令是 git branch ,不带参数时,显示本地分支列表,再加上 --show-current ,可以只显示当前分支名,这正是我们需要的。

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

--no-color 显示不带颜色的字样。

最终结果

  1. function prompt
  2. {
  3. $random = new-object random
  4. $color=[System.ConsoleColor]$random.next(1,16)
  5. Write-Host ("[" + $(get-Date) + "] ") -nonewline -foregroundcolor green
  6. Write-Host $(get-location) -nonewline -foregroundcolor $color
  7. git rev-parse | Out-Null
  8. if($?){
  9. Write-Host (" (" + $(git branch --show-current) + ")") -NoNewLine -ForegroundColor Magenta
  10. }
  11. Write-Host (">") -nonewline -foregroundcolor $color
  12. return " " # 不加这句会多一个 PS >
  13. }

代码所放位置:

 最终结果显示如下:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/393843
推荐阅读
相关标签
  

闽ICP备14008679号