J'écris un script bash pour ajouter, valider, pousser tous les fichiers dans un répertoire.
#!/bin/bash
git add .
read -p "Commit description: " desc
git commit -m $desc
git Push Origin master
J'obtiens l'erreur suivante:
$ ./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
Je ne sais pas si c'est un problème de lecture dans le texte (ça echo
s bien) ou de le passer à git commit -m
.
Tu dois faire:
git commit -m "$desc"
Dans le script actuel, test
va comme message de validation et commit
et script
sont traités comme les prochains arguments.
Voici une fusion des deux dernières réponses - enchaîner ensemble l'add -u est génial, mais la commande de lecture intégrée me causait des problèmes. J'y suis allé (dernière ligne utilisée pour mon Heroku Push, changez en 'git Push Origin head' si c'est votre méthode):
#!/bin/bash
read -p "Commit description: " desc
git add . && \
git add -u && \
git commit -m "$desc" && \
git Push heroku master
il est utile de supprimer de l'index les fichiers réellement supprimés. git add -u
s'occupe de cela. En outre, vous pouvez envisager de chaîner ces commandes ensemble comme ceci:
git add . && \
git add -u && \
git commit -m "$(read -p 'Commit description: ')" && \
git Push Origin HEAD
Si une commande échoue, elle cessera d'évaluer les commandes restantes.
Juste matière à réflexion (nourriture non testée).
Merci!
Ce qui suit est un script que j'utilise pour gérer mes dépôts git - cela inclura l'option de pousser vers votre branche d'origine, votre site de transfert (si configuration) et votre site de production (si configuration)
#!/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
J'ai essayé d'inclure autant de commentaires que possible pour vous aider à comprendre ce que tout fait.
faites moi savoir si vous avez des questions.
aussi, j'ai cette configuration comme ça
echo "alias commit='sh /path/to/script.sh" >> ~/.bash_profile
source ~/.bash_profile
peut-être que cela peut aider quelqu'un qui cherche à accélérer le flux de travail
#!/bin/bash
git pull
git add .
git commit -m "$*"
git Push
script d'appel avec commentaire sous forme d'arguments cmd, moins de clés pour pousser:
$ ./togithub test commit script
C'est ce que j'utilise la plupart du temps pour valider une branche locale et fusionner avec des branches distantes:
Ce petit script bash vous permet d'ajouter et de valider sur votre branche locale, de passer à une autre branche, de fusionner avec elle et de la pousser, et également de reprendre à votre branche locale, afin de continuer à travailler.
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