在windows命令提示符中显示当前GIT分支名称

dohp0rv5  于 2023-03-19  发布在  Windows
关注(0)|答案(7)|浏览(398)

可以在常规的windows命令提示符下显示当前的git分支名称吗?
比如说在windows7或10上。

fhg3lkii

fhg3lkii1#

您无法从基于Windows的“命令提示符”中执行此操作。但是,有一个环境可以在Windows环境之上运行,它可以。
运行Git windows安装程序并允许安装git后,可以从上下文菜单调用git-bash。

默认情况下,git-bash环境会显示您所在的分支。

xmd2e60i

xmd2e60i2#

不是在命令提示符,但在PowerShell和Windows终端,这是可能的。你甚至可以为终端自定义主题。以下是步骤:
1.很明显你需要Git作为开始。从Git website安装Git for windows
1.然后从“Windows商店”下载“Windows终端”应用程序。它具有多种功能和新功能,您可以在同一窗口打开不同终端的多个标签页等等。
1.安装“Windows终端”后,打开它,现在你应该使用PowerShell安装“Posh-Git”和“Oh-My-Posh”:(如果您尚未安装NuGet,则可能需要安装它。如果是这种情况,PowerShell命令行将询问您是否要安装NuGet。选择[Y]是。您可能还需要批准从“不受信任的存储库”PSGallery安装模块。选择[Y]是。)

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

1.现在使用notepad $PROFILE打开您的“PowerShell”配置文件,并将以下行添加到文件末尾:(这是与“Windows终端”配置文件不同的配置文件。PowerShell配置文件是每次启动PowerShell时运行的脚本。)。如果Set-PoshPrompt在此处不起作用,请尝试改用Set-Theme命令(https://superuser.com/questions/1629589/powershell-theming-doesnt-work-set-theme-not-found)。

Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt Paradox

1.现在您可以看到终端上的一些字符是方形的,因为默认字体不支持它们。(根据终端的字体,您可能没有看到此问题。如果您看到所有字符都很好,而不是方形,跳过这一步)你想安装“Cascadia PL”字体来支持这些字符。2从Cascadia Code release page下载它们。您需要安装这些版本的字体,以使其支持以下字符:

Cascadia Code PL
Cascadia Mono PL

1.然后,在Windows终端中,按Ctrl+,打开“settings.json”中的Windows终端配置文件设置,并将这些行添加到“配置文件”的“默认值”部分,如下所示:

"fontFace": "Cascadia Code PL"

How to go to the Windows Terminal settings picture guide
Where to change the font face picture guide
PS 1:如果你想在集成终端上有这些改变,比如VS代码上的那个,你应该在VS代码的设置中添加这一行:

"terminal.integrated.fontFamily": "Cascadia Code PL"

PS 2:想了解更多关于“Oh-My-Posh”的内容,改变一下它的主题,请访问Oh-My-Posh's github page获取更多信息。
资料来源:
https://learn.microsoft.com/en-us/windows/terminal/tutorials/powerline-setuphttps://www.hanselman.com/blog/how-to-make-a-pretty-prompt-in-windows-terminal-with-powerline-nerd-fonts-cascadia-code-wsl-and-ohmyposh

mwecs4sa

mwecs4sa3#

这是我正在使用的git.bat,我从下面的链接中得到了答案:
https://www.nu42.com/2016/05/display-git-branch-windows-command-prompt.html
首先,在一个文件夹中创建git.bat文件,然后将该文件夹添加到PATH中git.exe行的前面(我假设你已经安装了git.exe),这样可以确保每次你在命令行中输入git时,都会触发新的git.bat而不是git.exe。

@echo off
git.exe %*
set GITBRANCH=
for /f %%I in ('git.exe rev-parse --abbrev-ref HEAD 2^> NUL') do set GITBRANCH=%%I

if "%GITBRANCH%" == "" (
  prompt $P$G 
) else (
    prompt $P $C$E[32;7;32;47m%GITBRANCH%$E[0m$F $G 
)
mm5n2pyu

mm5n2pyu4#

如果您使用的是Windows PowerShell,您可以通过在PowerShell窗口中运行以下函数来覆盖标准的“Prompt”函数。这将使它检测Git存储库并在提示字符串中列出Git分支:

Function Prompt
{
    $git_cmd = "git rev-parse --abbrev-ref HEAD"
    Invoke-Expression $git_cmd 2> $null | Tee-Object -Variable git_branch | Out-Null
    $git_branch_text = $None
    if ( $git_branch -And -Not $git_branch.StartsWith($git_cmd)) 
    {
        $git_branch_text = "[$git_branch] "
    }

    $stringBuilder = New-Object System.Text.StringBuilder
    $null = $stringBuilder.Append("PS ")
    if ($git_branch_text) { $null = $stringBuilder.Append($git_branch_text) }
    $null = $stringBuilder.Append($($executionContext.SessionState.Path.CurrentLocation))
    $null = $stringBuilder.Append($('>' * ($nestedPromptLevel + 1)))
    $null = $stringBuilder.Append(" ")
    return $stringBuilder.ToString()
}

PS C:\Users\username\Document\GitHub>
PS C:\Users\username\Document\GitHub>cd code_repository
PS [dev] C:\Users\username\Document\GitHub\code_repository>

PS [dev] C:\Users\username\Document\GitHub\code_repository>cd ..
PS C:\Users\username\Document\GitHub>

在PowerShell版本5.1.17763.592上进行了测试。
若要在所有PowerShell命令窗口中应用此提示符更改,请将此函数放入C:\Users\username\Documents\WindowsPowerShell中名为profile.ps1的文件中。此后打开的任何PowerShell命令窗口在位于Git存储库的一部分目录中时都应显示Git提示符。

lyr7nygr

lyr7nygr5#

是的,你可以。你可以创建一个脚本,命名为'gb.bash',然后添加下面的代码

@echo off
set GITBRANCH=
for /f "tokens=2" %%I in ('git.exe branch 2^> NUL ^| findstr /b "* "') do set GITBRANCH=%%I

if "%GITBRANCH%" == "" (
    prompt $P$G 
) else (
    prompt $P $C$E[10;7;32;47m%GITBRANCH%$E[0m$F $G 
)

然后转到环境变量,并将包含此脚本的文件夹添加到路径中。
有了这些,只要在git仓库中的终端上启动命令'gb',分支名称就会放在当前文件夹的路径上。
目前,这个解决方案需要你手动启动命令'gb'来触发脚本。但是,我相信还有一种方法可以在你启动CMD时自动触发脚本。我会在某个时候研究一下并更新这个答案。
我从这两个来源得到了解决方案:
Show git branch in Windows command prompt
Display git branch in Windows command prompt
免责声明:切换到新分支后,您必须触发'gb'以更新显示的分支名称。

70gysomp

70gysomp6#

我正在使用babun(已停产)
它为git提供了一个很棒的命令行视图,它还支持上下文菜单,可以在任何位置右击打开。

dzhpxtsq

dzhpxtsq7#

@法里德·肖克里完全正确。
不是在命令提示符中,而是在PowerShell [...]中
没有本机方法,但您可以使用 AutoRunDoskeyPrompt和自定义批处理脚本自定义cmd行为。
溶液
1.创建一个批处理脚本cd-git.bat(见下文),我们将其放在 C:\Apps 中。

  • 创建 AutoRun 字符串值(或)
  • HKLM\软件\Microsoft\命令处理器\自动运行
  • HKCU\软件\Microsoft\命令处理器\自动运行

字符串值:

if exist C:\Apps\cd-git.bat doskey cd=C:\Apps\cd-git.bat $*

光盘-git.bat

@echo off
CD %*
where git >nul 2>&1
if %errorlevel% neq 0 (
    goto :eof
)
for /f "usebackq tokens=* delims=" %%g in (`git rev-parse --is-inside-work-tree ^>nul 2^>^&1 ^&^& git branch --show-current`) do (
    set branchname=%%g
)
if "%branchname%"=="" (
    prompt $p$_$$$s
) else (
    prompt $p $c$e[36m%branchname%$e[0m$f$_$$$s
)
set branchname=

结果

示例:启动一个新的cmd并导航到一个git仓库。

Microsoft Windows [Version 10.0.19041.2673]
(c) Microsoft Corporation. All rights reserved.

C:\Users>cd \Develop\git-test

C:\Develop\git-test (main)
$ cd ..

C:\Develop
$

只要你cd到一个git仓库目录,它的当前分支就会显示在括号中。

解释

  • AutoRun 条目通过使用doskey命令为cd命令创建新别名(宏),但仅当我们的自定义批处理脚本cd-git.bat存在时。
  • doskey cd别名确保通过使用cd执行cd-git
  1. cd-git
    1.最重要的是:cd s到请求的目录中。
    1.检查git命令是否可用。
    1.如果有,它检查当前目录是否有分支名称。
    1.如果是,则将提示更改为同时显示分支名称。

参考文献

相关问题