git !alias 可以在 bash 和 Powershell 中使用



您将如何实现执行外部命令的git别名,并且可以在bash和Powershell上工作?

我目前为 bash(在我的.bash_profile中(和 Powershell(profile.ps1年(设置了一个gitPrune别名,用于清理不再需要的分支:

# bash
alias gitPrune="git remote prune origin; git branch --merged | grep -vEe '^*| master$' | sed 's/.*/git branch -dv /e'"    
# Powershell
function gitPrune { git remote prune origin; git branch --merged | Select-String -NotMatch '^*| master$' | %{git branch -dv $_.ToString().Trim()} }

这样,我就可以从git-bash(在Windows上(和PowershellgitPrune。现在我想把它移到我的.gitconfig,与其他与 git 相关的别名保持一致。但是,无论我是否打开了Powershell控制台或git-bash终端,都将使用相同的.gitconfig。如何使用 git-config "外部命令"语法实现此"双重"命令?

[alias]
myPrune = "! ..."

当 git 使用 shell 执行别名时,使用的 shell 是一个固定的编译时选项。 它通常会/bin/sh.

因此,您无需担心结果不同,只需使用bash别名中的语法即可,而不必担心powershell。要演示:

$ cat .git/config [别名] shellpath = !pid=$$ && ps -o comm= $pid $ bash -c 'git shellpath'/bin/sh $ pwsh -c 'git shellpath'/bin/sh

最新更新