Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在windows命令提示符下显示当前GIT分支名称_Windows_Git_Branch_Command Prompt - Fatal编程技术网

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

在windows命令提示符下显示当前GIT分支名称,windows,git,branch,command-prompt,Windows,Git,Branch,Command Prompt,是否可以在常规windows命令提示符中显示当前git分支名称? 比如说在windows 7或10上。您不能通过基于windows的“命令提示符”执行此操作。但是,有一个环境可以在您的windows环境上运行,确实如此 运行GitWindows安装程序并允许安装后,可以从上下文菜单调用GitBash 默认情况下,git bash环境显示您所在的分支 这是我正在使用的git.bat。我从以下链接得到了答案: 首先,在文件夹中创建git.bat文件,然后将该文件夹添加到git.exe的路径和行的

是否可以在常规windows命令提示符中显示当前git分支名称?

比如说在windows 7或10上。

您不能通过基于windows的“命令提示符”执行此操作。但是,有一个环境可以在您的windows环境上运行,确实如此

运行GitWindows安装程序并允许安装后,可以从上下文菜单调用GitBash

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


这是我正在使用的git.bat。我从以下链接得到了答案:

首先,在文件夹中创建git.bat文件,然后将该文件夹添加到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 
)
我正在使用(已停止)
它为git提供了一个很棒的命令行视图。 它还支持上下文菜单,可以从右键单击的任何位置打开


如果您使用的是Windows PowerShell,您可以通过在正在使用的PowerShell窗口中运行以下功能来覆盖标准的“提示”功能。这将使它检测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提示符。

是的,您可以。您可以创建一个脚本并将其命名为“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” 更新显示的分支名称


这是可能的。您甚至可以为终端自定义主题。 以下是步骤:

  • 很明显,您首先需要Git。从安装Git for windows
  • 然后从“Windows应用商店”下载“Windows终端”应用程序。它具有多种功能和新功能,您可以在同一窗口上打开不同终端的多个选项卡,等等
  • 安装“Windows终端”后,打开它,现在您应该使用PowerShell安装“Posh Git”和“Oh My Posh”:(如果尚未安装NuGet,则可能需要安装它。如果是这种情况,PowerShell命令行将询问您是否要安装NuGet。选择[Y]是。您可能还需要批准从“不受信任的存储库”PSGallery安装模块。选择[Y]是。)
  • 现在,使用
    notepad$profile
    打开您的“PowerShell”配置文件,并在文件末尾添加以下行:(这是一个与“Windows终端”配置文件不同的配置文件。PowerShell配置文件是每次启动PowerShell时运行的脚本。)
  • 现在,您可以看到终端上的一些字符是正方形,因为默认字体不支持它们。(根据终端的字体,您可能没有看到此问题。如果您看到所有字符都是精细的而不是正方形,请跳过此步骤)您希望安装“Cascadia PL”字体以支持这些字符。从下载。您需要安装这些版本的字体,以使其支持以下字符:
  • 然后,在Windows终端中,按Ctrl+,打开“settings.json”中的Windows终端配置文件设置,并将这些行添加到“profiles”的“defaults”部分,如下所示:
  • PS 1:如果您想在集成终端(如VS代码上的终端)上进行这些更改,则应将此行添加到VS代码的设置中:

    "terminal.integrated.fontFamily": "Cascadia Code PL"
    
    PS 2:为了了解更多关于“噢,我的时髦”的信息,并改变它的主题,请访问以获取更多信息


    资料来源:


    git status
    在第一行显示当前分支
    git分支-a
    列出所有本地分支,其中当前分支标有a
    *
    。这就是你想要的吗?当然不是:)你说的是纯git命令,我说的是win命令提示符,类似于Linux中的bash。更简单的答案,适用于所有地方:不错,但它需要在提示符上更新分支名称之前执行git命令。(另外,我无法使git.bat覆盖git.exe)系统可能正在搜索.bat之前的.exe。您可以将git.exe重命名为其他名称,然后使用该名称调用.bat文件中正确的.exe文件。请参见,我不知何故使用了git CMD,但无法看到我的分支名称。安装了git,它安装了git bash,然后我就可以看到我的分支名称。另外,git bash可以集成为VS Code中的默认终端。这里只是一个注释,我使用的是git bash,但我需要使用CMD的原因是因为git bash中的环绕节点和Ctrl+C功能当前已损坏。仅供将来参考,babun是的,很遗憾:(,又一个最好的软件停产了。但仍然在使用它,没有任何问题。
    Import-Module posh-git
    Import-Module oh-my-posh
    Set-Theme Paradox
    
    Cascadia Code PL
    Cascadia Mono PL
    
    "fontFace": "Cascadia Code PL"
    
    "terminal.integrated.fontFamily": "Cascadia Code PL"