在常规的Windows命令提示符中显示当前的git分支名称是否可行?
比如说在Windows 7或10上。
在常规的Windows命令提示符中显示当前的git分支名称是否可行?
比如说在Windows 7或10上。
虽然无法在命令提示符中实现,但在PowerShell和Windows终端中是可能的。你甚至可以为终端设置自定义主题。 以下是步骤:
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
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
Cascadia Code PL
Cascadia Mono PL
Ctrl+,
打开“settings.json”中的Windows终端配置文件,并将以下行添加到“profiles”的“defaults”部分中,如下所示:"fontFace": "Cascadia Code PL"
PS 1:如果你想在VS Code等集成终端上做出这些更改,你应该将这行代码添加到VS Code的设置中:
"terminal.integrated.fontFamily": "Cascadia Code PL"
PS 2: 如欲了解更多关于 "Oh-My-Posh" 的信息并更改其主题,请访问 Oh-My-Posh 的 GitHub 页面。
来源:
https://learn.microsoft.com/en-us/windows/terminal/tutorials/powerline-setup https://www.hanselman.com/blog/how-to-make-a-pretty-prompt-in-windows-terminal-with-powerline-nerd-fonts-cascadia-code-wsl-and-ohmyposh
The term 'Set-Theme' is not recognized as the name of a cmdlet, function, script file, or operable program
。 - Code Spirit你不能通过基于Windows的“命令提示符”执行此操作。然而,有一个环境可以运行在你的Windows环境之上。
当你运行Git Windows安装程序并允许git安装后,你可以从右键菜单中调用git-bash。
默认情况下,git-bash环境会显示你所在的分支。
这是我正在使用的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
)
如果你正在使用Windows PowerShell,你可以在当前的PowerShell窗口中运行以下命令来覆盖标准的“Prompt”函数。这将使它检测Git仓库并在提示字符串中列出Git分支:
Original Answer翻译成"最初的回答"
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命令窗口中应用此提示更改,请将此函数放入名为profile.ps1的文件中,该文件位于C:\Users\username\Documents\WindowsPowerShell中。 之后打开的任何PowerShell命令窗口都应该在Git存储库目录中时具有Git提示。
最初的回答:
是的,你可以。你可以创建一个脚本并将其命名为'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时自动触发脚本。我会在某个时候研究并更新这个答案。
我从这两个来源获得了解决方案:
免责声明:切换到新分支后,您必须执行'gb'以更新显示的分支名称。
我正在使用babun(已停用)
它为git提供了一个很棒的命令行视图。
它还支持上下文菜单,并且可以在任何位置通过右键单击打开。
@Farid Shokri的说法并不完全正确。
不是在命令提示符中,而是在PowerShell中[...]
虽然没有本地方法,但您可以使用AutoRun、Doskey
、Prompt
和自定义批处理脚本来自定义cmd行为。
创建一个批处理脚本 cd-git.bat
(见下文)。我们将其放在 C:\Apps 中。
创建一个 AutoRun 字符串值(任选其一)
字符串值:
if exist C:\Apps\cd-git.bat doskey cd=C:\Apps\cd-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=
示例:启动一个新的命令行窗口并导航到一个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仓库目录时,它的当前分支将在括号内显示。
doskey
命令为cd
命令创建一个新的别名(宏),但仅在我们的自定义批处理脚本cd-git.bat
存在时才会创建。doskey
cd别名确保使用cd
时执行cd-git
。cd-git
git
命令。
git status
显示当前分支在第一行。git branch -a
列出所有本地分支,当前分支用*
标记。这是你想要的吗? - Daniel Luz