En gros, je cherche este mais pour PowerShell au lieu de bash.
J'utilise git sous Windows via PowerShell. Si possible, j'aimerais que le nom de ma branche actuelle soit affiché dans l'invite de commande.
En gros, je cherche este mais pour PowerShell au lieu de bash.
J'utilise git sous Windows via PowerShell. Si possible, j'aimerais que le nom de ma branche actuelle soit affiché dans l'invite de commande.
Un moyen plus simple serait d'installer simplement le module Powershell posh-git . Il sort de la boîte avec l'invite souhaitée :
L'incitation
PowerShell génère son invite en exécutant une fonction d'invite, si elle existe. posh-git définit une telle fonction dans profile.example.ps1 qui produit le répertoire de travail actuel suivi d'un statut git abrégé :
C:\Users\Keith [master]>
Par défaut, le résumé de l'état a le format suivant :
[{HEAD-name} +A ~B -C !D | +E ~F -G !H]
(Pour installer posh-git, je suggère d'utiliser psget )
Si vous n'avez pas psget, utilisez la commande suivante :
(new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/psget/psget/master/GetPsGet.ps1") | iex
Pour installer posh-git, utilisez la commande : Install-Module posh-git
Pour s'assurer que posh-git se charge pour chaque shell, utilisez la commande Add-PoshGitToProfile
commande .
Comment activer ce module au démarrage ? On dirait que powershell oublie ce module à chaque fois que j'ouvre une nouvelle instance.
@Mihir vous devez créer un profil, regarder les réponses stackoverflow.com/questions/24914589/
@NicolaPeluchetti Merci ! J'ai suivi howtogeek.com/50236/customizing-your-powershell-profile et j'ai ajouté Import-Module posh-git
dans mon profil powershell. Ça a marché comme sur des roulettes !
Voici ce que j'en pense. J'ai modifié un peu les couleurs pour que ce soit plus lisible.
Microsoft.PowerShell_profile.ps1
function Write-BranchName () {
try {
$branch = git rev-parse --abbrev-ref HEAD
if ($branch -eq "HEAD") {
# we're probably in detached HEAD state, so print the SHA
$branch = git rev-parse --short HEAD
Write-Host " ($branch)" -ForegroundColor "red"
}
else {
# we're on an actual branch, so print it
Write-Host " ($branch)" -ForegroundColor "blue"
}
} catch {
# we'll end up here if we're in a newly initiated git repo
Write-Host " (no branches yet)" -ForegroundColor "yellow"
}
}
function prompt {
$base = "PS "
$path = "$($executionContext.SessionState.Path.CurrentLocation)"
$userPrompt = "$('>' * ($nestedPromptLevel + 1)) "
Write-Host "`n$base" -NoNewline
if (Test-Path .git) {
Write-Host $path -NoNewline -ForegroundColor "green"
Write-BranchName
}
else {
# we're not in a repo so don't bother displaying branch name/sha
Write-Host $path -ForegroundColor "green"
}
return $userPrompt
}
Exemple 1 :
Exemple 2 :
@Paul-
Mon profil PowerShell pour Git est basé sur un script que j'ai trouvé ici :
http://techblogging.wordpress.com/2008/10/12/displaying-git-branch-on-your-powershell-prompt/
Je l'ai modifié un peu pour afficher le chemin du répertoire et un peu de mise en forme. Il définit également le chemin vers l'emplacement de mon bin Git puisque j'utilise PortableGit.
# General variables
$pathToPortableGit = "D:\shared_tools\tools\PortableGit"
$scripts = "D:\shared_tools\scripts"
# Add Git executables to the mix.
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";" + (Join-Path $pathToPortableGit "\bin") + ";" + $scripts, "Process")
# Setup Home so that Git doesn't freak out.
[System.Environment]::SetEnvironmentVariable("HOME", (Join-Path $Env:HomeDrive $Env:HomePath), "Process")
$Global:CurrentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$UserType = "User"
$CurrentUser.Groups | foreach {
if ($_.value -eq "S-1-5-32-544") {
$UserType = "Admin" }
}
function prompt {
# Fun stuff if using the standard PowerShell prompt; not useful for Console2.
# This, and the variables above, could be commented out.
if($UserType -eq "Admin") {
$host.UI.RawUI.WindowTitle = "" + $(get-location) + " : Admin"
$host.UI.RawUI.ForegroundColor = "white"
}
else {
$host.ui.rawui.WindowTitle = $(get-location)
}
Write-Host("")
$status_string = ""
$symbolicref = git symbolic-ref HEAD
if($symbolicref -ne $NULL) {
$status_string += "GIT [" + $symbolicref.substring($symbolicref.LastIndexOf("/") +1) + "] "
$differences = (git diff-index --name-status HEAD)
$git_update_count = [regex]::matches($differences, "M`t").count
$git_create_count = [regex]::matches($differences, "A`t").count
$git_delete_count = [regex]::matches($differences, "D`t").count
$status_string += "c:" + $git_create_count + " u:" + $git_update_count + " d:" + $git_delete_count + " | "
}
else {
$status_string = "PS "
}
if ($status_string.StartsWith("GIT")) {
Write-Host ($status_string + $(get-location) + ">") -nonewline -foregroundcolor yellow
}
else {
Write-Host ($status_string + $(get-location) + ">") -nonewline -foregroundcolor green
}
return " "
}
Jusqu'à présent, cela a très bien fonctionné. Dans un repo, l'invite ressemble heureusement à ceci :
GIT [master] c:0 u:1 d:0 | J:\Projects\forks\fluent -nhibernate>
*NOTE : Mis à jour avec les suggestions de Jakub Narebski.
Merci David, j'ai pu facilement modifier ceci et utiliser les instructions de l'article du blog lié pour obtenir quelque chose qui me convient.
Ne pas gratter la sortie de git-branch pour obtenir le nom de la branche courante ; il est destiné à l'utilisateur final (il est en porcelaine). Utilisez git symbolic-ref HEAD
. N'utilisez pas git-status ; il est destiné à l'utilisateur final et est susceptible d'être modifié (il serait modifié dans la version 1.7.0). Utilisez git-diff-files, git-diff-tree, git-diff-index.
Posh-git est lent, il existe un meilleur moyen avec https://ohmyposh.dev/ .
Exécutez cette commande depuis powershell pour installer ohmyposh
module :
Install-Module oh-my-posh -Scope CurrentUser -AllowPrerelease
installer une police qui prend en charge les glyphes (icônes) de https://www.nerdfonts.com/ .
J'aime Meslo LGM NF .
définir cette police dans les paramètres par défaut de powershell :
Ouvrir/créer un fichier Microsoft.PowerShell_profile.ps1
à l'adresse C:\Program Files\PowerShell\7
et écrivez ci-dessous pour définir le thème (comme dans la capture d'écran) :
Set-PoshPrompt -Theme aliens
Vous pouvez également choisir d'autres thèmes. Voir l'aperçu en exécutant Get-PoshThemes
Maintenant, ouvrez powershell à l'emplacement contenant le repo git et vous verrez le statut.
Voir plus : Mettez votre PowerShell sous tension
Avec Git 2.22 (Q2 2019), n'importe quel script (Powershell ou non) pouvait utiliser le nouveau --show-current
option .
$branch = git branch --show-current
S'il est vide, cela signifie "HEAD détaché".
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Avec Git 2.22 (Q2 2019), n'oubliez pas
git branch --current
.