Git commit script bash

j'écris un script bash pour ajouter, commit, push tous les fichiers d'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 suis pas sûr si c'est un problème avec la lecture dans le texte (

6 ответов

Vous avez à faire:

git commit -m "$desc"

dans le script actuel,test va comme le message de propagation et commit et script sont traités comme arguments suivants.

34
répondu manojlds 2011-12-13 04:27:26
la source

voici une fusion des deux dernières réponses - enchaîner l'add-u est génial, mais la commande de lecture intégrée me causait des problèmes. Je suis allé avec (dernière ligne utilisée pour mon push heroku, "git push origin tête", 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
11
répondu JayCrossler 2012-04-01 06:22:47
la source

il est utile de supprimer de l'index les fichiers qui ont été effectivement supprimés. git add -u s'occupe de ça. En outre, vous pouvez envisager d'enchaî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 de la nourriture pour la pensée (nourriture non testée).

Merci!

4
répondu gahooa 2011-12-13 04:42:13
la source
#!/bin/bash  
git pull
git add .
git commit -m "$*"
git push

script d'appel avec des commentaires comme cmd args, moins de touches à actionner:

$ ./togithub test commit script 
3
répondu godzilla 2014-07-26 11:23:17
la source

ce qui suit est un script que j'utilise pour gérer mes repos git - cela inclura l'option de pousser vers votre branche d'Origine, votre site de mise en scène ( SI setup ), et votre site de production ( SI setup )

#!/usr/bin/env bash

# die script -- just in case
die() { echo "[email protected]" 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 qu'il fait.

laissez-moi savoir si vous avez des questions.

aussi, j'ai cette configuration comme ceci

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

3
répondu RobBenz 2016-02-05 15:53:08
la source

C'est ce que j'utilise la plupart du temps pour propager la branche locale et fusionner avec les branches distantes:

Ce petit script bash permet d'ajouter et de s'engager sur votre succursale locale, caisse à une autre branche, de fusionner avec elle et la pousser, et aussi regarder de nouveau votre agence locale, pour que vous continuiez à 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
2
répondu Filipe Fernandes 2016-10-07 01:56:53
la source

Autres questions sur