Guión de Git commit bash

Estoy escribiendo un script bash para agregar, confirmar y enviar todos los files en un directory.

#!/bin/bash git add . read -p "Commit description: " desc git commit -m $desc git push origin master 

Me aparece el siguiente error:

 $ ./togithub Commit description: test commit script error: pathspec 'commit' did not match any file(s) known to git. error: pathspec 'script"' did not match any file(s) known to git. Everything up-to-date 

No estoy seguro de si esto es un problema al leer en el text (me parece bien) o pasarlo a git commit -m .

Tu tienes que hacer:

 git commit -m "$desc" 

En la secuencia de commands actual, la test va como un post de commit y la commit y la script se tratan como próximos arguments.

Aquí hay una fusión de las dos últimas respuestas: encadenar el agregado -u es increíble, pero el command de lectura embedded me estaba causando problemas. Fui con (última línea utilizada para mi push heroku, cambie a 'git push origin head' si ese es su método):

 #!/bin/bash read -p "Commit description: " desc git add . && \ git add -u && \ git commit -m "$desc" && \ git push heroku master 

es útil eliminar del índice los files que realmente se han eliminado. git add -u se encarga de esto. Además, es posible que desee considerar encadenar estos commands de esta manera:

 git add . && \ git add -u && \ git commit -m "$(read -p 'Commit description: ')" && \ git push origin HEAD 

Si algún command falla, dejará de evaluar los commands restantes.

Solo comida para pensar (comida no probada).

¡Gracias!

La siguiente es una secuencia de commands que utilizo para gestionar mis repositorys git: esto includeá la opción de enviar a su sucursal de origen, su sitio de ensayo (si está configurado) y su sitio de producción (si está configurado)

 #!/usr/bin/env bash # die script -- just in case die() { echo "$@" 1>&2 ; exit 1; } # kill message when dead KILL="Invalid Command" # function to see where to push what branch pushing() { git branch sleep 1 tput setaf 1;echo What Branch?;tput sgr0 read -r branch tput setaf 2;echo Where to? You can say 'origin', 'staging', or 'production';tput sgr0 read -r ans if [ "$ans" = "origin" ] || [ "$ans" = "staging" ] || [ "$ans" = "production" ] then git push "$ans" "$branch" elif [ "$ans" = "no" ] then echo "Okay" else die "$KILL" fi } # function to see how many more times more() { tput setaf 2;echo More?;tput sgr0 read -r more if [ "$more" = "yes" ] then pushing elif [ "$more" = "no" ] then die "Goodbye" else die "$KILL" fi } # get the root directory in case you run script from deeper into the repo gr="$(git rev-parse --show-toplevel)" cd "$gr" || exit tput setaf 5;pwd;tput sgr0 # begin commit input git add . -A read -r -p "Commit description: " desc git commit -m "$desc" # find out if we're pushin somewhere tput setaf 2;echo wanna do some pushin?;tput sgr0 read -r push if [ "$push" = "yes" ] then pushing # you know this function until [ "$more" = "no" ] do more # you know this function done elif [ "$push" = "no" ] then echo "Okay" else die "$KILL" fi 

Traté de include tantos comentarios como sea posible para ayudarlo a comprender lo que hace todo.

Hazme saber si tienes alguna pregunta.

Además, tengo esta configuration como esta

echo "alias commit='sh /path/to/script.sh" >> ~/.bash_profile source ~/.bash_profile

tal vez esto puede ayudar a alguien que busca acelerar el flujo de trabajo

 #!/bin/bash git pull git add . git commit -m "$*" git push 

guión de llamada con comentario como cmd args, less keys para presionar:

 $ ./togithub test commit script 

Esto es lo que uso la mayor parte del time para comprometer una sucursal local y fusionarme con sucursales remotas:

Este pequeño script bash te permite agregar y comprometer en tu sucursal local, pagar en otra sucursal, fusionarte con él y enviarlo, y también pagar de nuevo en tu sucursal local, para que puedas seguir trabajando.

 default="local-dev-whatever-the-name-of-your-local-branch" read -p "Enter local branch [$default]: " local local=${local:-$default} echo "Local branch is $local" if [ -z "$local" ] then bin/git-merge.sh else printf "Enter remote branch: " read remote if [ -z "$remote" ] then printf "Cannot continue without remote branch!\n\n" exit fi git add . git add -u read -r -p 'Commit description: ' desc if [ -z "$desc" ] then printf "\nExit: commit description is empty!" fi git commit -m "$desc" git checkout $remote git status git merge $local git push git status git checkout $local git status printf "\nEnd local commit on $local; merge and push to branch $remote. Well done!\n" fi