您将如何实现一个git别名,该别名执行外部命令,并且可以同时在bash和Powershell中使用?
我目前为bash(在我的gitPrune
中)和Powershell(在.bash_profile
中)都设置了profile.ps1
别名,它清除了不再需要的分支:>
# bash
alias gitPrune="git remote prune origin; git branch --merged | grep -vEe '^\*| master$' | sed 's/.*/git branch -dv \0/e'"
# Powershell
function gitPrune { git remote prune origin; git branch --merged | Select-String -NotMatch '^\*| master$' | %{git branch -dv $_.ToString().Trim()} }
这样,我可以从git-bash(在Windows上)和Powershell中gitPrune
。现在,我想将其移至.gitconfig
中,以与其他与git相关的别名保持一致。但是,无论打开Powershell控制台还是git-bash终端,都将使用相同的.gitconfig
。如何使用git-config“外部命令”语法实现此“双重”命令?
[alias]
myPrune = "! ..."
答案 0 :(得分:1)
当git使用shell执行别名时,shell used是固定的编译时选项。通常是going to be /bin/sh
。
因此,您不必担心结果会有所不同,只需使用bash别名中的语法即可,而不必担心powershell。演示:
$ cat .git/config [alias] shellpath = !pid=$$ && ps -o comm= $pid $ bash -c 'git shellpath' /bin/sh $ pwsh -c 'git shellpath' /bin/sh