Git commit bash script

I’m writing a bash script to add, commit, push all files in a directory.

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

I’m getting the following error:

  • Why doesn't my git auto-update Expect script work?
  • “GIT_DIR=myproject.git git init” : What this command line doing on bash?
  • Bash or Python: How to download a single specified file from Github?
  • git branch | grep '^SomeThingInFrontOfLine' not working
  • Bash PS1 settings - how to get the current folder back as the terminal title
  • Bash and Git Flow bug in common file
  • $ ./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
    

    I’m not sure if this is a problem with reading in the text (it echos fine) or passing it to git commit -m.

  • Download a Git repo from BitBucket
  • Why is not recommended to have an Eclipse project folder as a Git repository?
  • How to clear git caches?
  • I put stuff in my git repository that I shouldn't have
  • Git asks for username every time I push
  • Is there a way to make git flow show the commands it is executing behind the scenes?
  • 6 Solutions collect form web for “Git commit bash script”

    You have to do:

    git commit -m "$desc"
    

    In the current script, test is going as commit message and commit and script are being treated as next arguments.

    Here’s a merge of the last two answers – chaining together the add -u is awesome, but the embedded read command was causing me troubles. I went with (last line used for my heroku push, change to ‘git push origin head’ if that’s your method):

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

    it is helpful to remove from the index the files that have actually been deleted. git add -u takes care of this. Also, you may want to consider chaining these commands together like this:

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

    If any command fails, it will stop evaluating the remaining commands.

    Just food for thought (untested food).

    Thanks!

    The following is a script that I use to mange my git repos – this will include the option to push to your origin branch, your staging site ( if setup ), and your production site ( if setup )

    #!/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
    

    I tried to include as many comments as possible to help you understand what everything does.

    let me know if you have any questions.

    also, i have this setup like this

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

    maybe this can help someone looking to accelerate workflow

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

    call script with comment as cmd args, less keys to push:

    $ ./togithub test commit script 
    

    This is what i use most of the time to commit local branch and merge with remote branches:

    This little bash script allows you to add and commit on your local branch,
    checkout to another branch, merge with it and push it, and also checkout again to
    your local branch, so that you continue to work.

    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
    
    Git Baby is a git and github fan, let's start git clone.