覆盖 git pull 的 bash 别名以包含 --recurse-submodules

覆盖 git pull 的 bash 别名以包含 --recurse-submodules

这两个功能似乎对我没有任何影响?有人能让它们工作并告诉我我做错了什么吗?

我正在尝试覆盖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一天想要使用常规命令,并且您必须至少暂时摆脱该脚本。在某些情况下,您肯定不想递归地提取子模块。对于没有子模块的存储库来说,这也是次优选择。

相关内容