¿Cómo puedo get una comilla simple literal en un git alias (esa es una function bash)?

Estoy trabajando en una base de código que tiene varios repositorys git diferentes. Por lo tanto, estoy jugando con submodules para tratar de organizarlos en un repository de origen. Se ve algo como esto:

source |- ember |- rails 

Ahora estoy tratando de crear un alias git para get el mismo nombre de sucursal en todos los repositorys. Si hago esto a mano, el command se ve así en la línea de command:

 git checkout -b <branch-name>; git submodule foreach 'git checkout -b <branch-name>' 

Me gustaría poder simplemente escribir:

 git sco -b <branch-name> 

y ha expandir sco al command completo. Hasta ahora, he llegado a esto:

 <.gitconfig> ... [alias] sco = "!f() {\ if [ $# -eq 0 ];then\ branch=$(git rev-parse --abbrev-ref HEAD);\ git submodule foreach 'git checkout '"$branch"'';\ else\ git checkout $@;\ git submodule foreach 'git checkout '"$@"'';\ fi\ }; f" 

Tenga en count que si no hay arguments pasados ​​a sco , se extraerá la twig actual en todos los submodules. Ese caso funciona como se esperaba. Es el caso de los parameters que no está funcionando. Creo que ™ la razón es que la única cita está siendo tragada.

Cualquier ayuda sería muy apreciada.

Gracias a @EtanReisner lo descubrí. La idea key fue que las comillas simples en el alias se interpretan como una sola cadena entrecomillada por bash. Aquí está el alias final:

  sco = "!f() {\ if [ $# -eq 0 ];then\ branch=$(git rev-parse --abbrev-ref HEAD);\ git submodule foreach '"'"git checkout "$branch'"';\ else\ git checkout "$@";\ git submodule foreach '"'"git checkout "$@'"';\ fi\ }; f" 

Funciona de maravilla.