¿Cómo crear una function de git personal, utilizable cada vez que inicie Bash?

Estoy desarrollando un website y uso git para actualizar el sitio, y tengo dos sucursales, así que va:

  • git add.
  • git cometer "algo"
  • git push
  • git checkout "prod"
  • git merge –no-ff dev
  • git push
  • git checkout "dev"

Necesito una function lazygit que se vea como

function lazygit(){ git add . git commit "$1" git push git checkout "prod" git merge --no-ff dev git push git checkout "dev" } 

Y sería uso como

 lazygit( "CSS UPDATE" ) 

Ahora mi pregunta es, ¿cómo puedo save esta function en un file o lo que sea para poder usarla en cualquier lugar?

Muchas gracias

Puede persistir en las funciones, alias y configuraciones de Bash en sus files ~/.bashrc , ~/.bash_profile , ~/.bash_login , o ~/.profile (entre otras opciones). Depende del sistema, pero la mayoría de los sistemas tienen un ~/.bashrc por lo que a eso se referirá la gente en general.

También sugiero encadenar estos commands con && , de modo que si uno falla la function se detiene, mientras que su function actual seguirá ejecutándose, ignorando cualquier falla:

 function lazygit(){ git add . && git commit "$1" && git push && git checkout prod && git merge --no-ff dev && git push && git checkout dev } 

También tenga en count que Bash no usa () al invocar funciones, los arguments están separados por espacios al igual que otros commands de shell. Entonces correría:

 $ lazygit "CSS UPDATE" 

Otra opción es definir un alias Git en lugar de una function de shell.

Los alias son parte de la configuration, así que echemos un vistazo a la página de manual de gitconfig(7) (ejecute git help config localmente):

alias.*

Alias ​​de command para el contenedor de commands git(1) – por ejemplo, después de definir "alias.last = cat-file commit HEAD" , la invocación "git last" es equivalente a "git cat-file commit HEAD". Para evitar confusiones y problemas con el uso de scripts, se ignoran los alias que ocultan los commands existentes de Git. Los arguments están divididos por espacios, se admite la cotización y el escape usuales de shell. Se puede usar un par de comillas o una barra invertida para citarlos.

Si la expansión de alias está precedida por un signo de exclamación, se tratará como un command de shell. Por ejemplo, al definir "alias.new =! Gitk –all –n ORIG_HEAD", la invocación "git new" es equivalente a ejecutar el command de shell "gitk –all –n ORIG_HEAD". Tenga en count que los commands de shell se ejecutarán desde el directory de nivel superior de un repository, que puede no ser necesariamente el directory actual. GIT_PREFIX se establece como devuelto ejecutando git rev-parse --show-prefix desde el directory actual original. Ver git-rev-parse(1) .

Entonces puedes hacer

 $ git config --add alias.whatever '!set -eu; git add . && git commit "$1" && git push && git checkout prod && git merge --no-ff dev && git push && git checkout dev' 

y luego solo

 $ git whatever "commit message" 

El set -eu; Haría que todo fallara a less que envíe el parámetro requerido. Otro enfoque sería pegar algo como test $# -gt 0 || exit 1; test $# -gt 0 || exit 1; allí en cambio.