Encadenando los commands del sistema en los commands de git

Estoy tratando de encadenar commands del sistema en bash a mis commands git.

Por ejemplo: git commit -m cat commit_message.txt .

Me he dado count de que uso exactamente los mismos 4 commands repetidamente, y me gustaría crear un alias que sí lo haga:

git add -A && git commit -m cat ~/my_project/commit_message.txt && git push origin dev && git push heroku-staging master .

Me gusta mantener un logging de los cambios que realizo en mi aplicación en mi file commit_message.txt y actualizarlo cada vez que realizo un cambio, por lo que sería ideal si pudiera leer este logging desde el terminal cada vez que lo hago. quiero comprometer un cambio.

De ninguna manera soy un asistente de terminal, así que espero que esta sea una solución fácil que aún no he encontrado. He buscado bastante y no he encontrado un uso similar.

git commit tiene un -F ( --file ) que hace exactamente lo que quieres, sin usar ninguna magia de shell: solo usa git commit -F commit_message.txt .

Necesita sustitución de command para usar la salida de un command como argumento para otro:

 git commit -m "$(< commit_message.txt)" 

También puede usar git commit -a para agregar todos los files, por lo que no es necesario llamar a git add :

 git commit -am "$(< commit_message.txt)" 

Yo crearía una function para eso:

 do_git_stuff() { # Du stuff... : # The colon is here because a function cannot be empty. This can be removed when you # add some "real" code } 

Para unirlo:

 do_git_stuff() { git commit -am "$(< commit_message.txt)" \ && git push origin dev \ && git push heroku-staging master } 

¿Qué es "$(< file.txt)" ?

El operador < significa que debe tomar stdin de file.txt . Una sustitución de command ( $(...) ) devolverá lo que está escrito en stdout. Las comillas se usan para evitar la split de palabras.

Puedes simplemente escribir un guion.

Crea el directory $HOME/bin para tus ejecutables:

 mkdir -p ~/bin 

Agregue el directory a $PATH dentro de su ~/.bashrc .

 export PATH=$PATH:$HOME/bin 

Actualice el entorno en la session de terminal actual:

 source ~/.bashrc 

Crea la secuencia de commands:

 git_commit_file="$HOME/bin/git-commit" cat > "$git_commit_file" <<'EOS' #!/bin/bash - message_file="$1" # Add your commands here ... EOS chmod +x $git_commit_file 

Ahora puede ejecutar git-commit message.txt .

Por cierto, crear alias es tan simple como agregar un alias name=command en ~/.bashrc , por ejemplo:

 alias ls='ls --color=auto' 

Pero recomendaría escribir un guión.

para crear un alias del sistema que puedes hacer:

 alias myName=myCommand 

o si solo desea un alias de session (solo disponible durante su terminal activa), puede hacer lo siguiente:

 myName=myCommand 

Para iniciarlo, puede hacer $myName

luego, para ejecutar varios commands, puedes intentar usar pipe:

 command 1 | command 2 ...