这两个功能似乎对我没有任何影响?有人能让它们工作并告诉我我做错了什么吗?
我正在尝试覆盖git pull
以包含递归子模块,同时保持其他 git 命令正常工作
#https://superuser.com/a/479816
function git() {
case $* in
-pull* ) shift 1; command git pull --recurse-submodules "$@" ;;
* ) command git "$@" ;;
esac
}
function ls() {
case $* in
-la* ) shift 1; command ls -la "$@" | more ;;
* ) command ls "$@" ;;
esac
}
答案1
首先,您的脚本没有多大意义,因为它试图匹配git -pull
,git -pulled123
和类似的语句。我建议您阅读有关您尝试使用的功能的信息,例如case
使用通配符 ( *
) 进行匹配或$*
(参数字符串) 的含义。
无论如何,不要太深入,因为这不是解决问题的办法。定义 git 别名的最正确方法是使用git config --global alias.xyz "definition"
,例如:
git config --global alias.rpull "pull --recurse-submodules"
您无法通过这种方式覆盖命令,但可以使用非常相似的命令。而且覆盖通常不是一个好主意,因为您可能有pull
一天想要使用常规命令,并且您必须至少暂时摆脱该脚本。在某些情况下,您肯定不想递归地提取子模块。对于没有子模块的存储库来说,这也是次优选择。