Check response of git push from shell script

I’m trying to detect from bash if my git push was successful. I am checking for local changes previously in my script like this:

if [ -z "$(git status --porcelain)" ]; then

and that works fine. This is the expression I have tried but this one doesn’t work, in fact it errors:

if [ "$(git push --porcelain)" -eq "Done" ]; then

yields:

Done: integer expression expected

When I run git push --porcelain from the command line, the output is Done. Does this mean I should be checking for that text in my condition?

If I do the previous comparison, that doesn’t work either, I get the same error:

1 file changed, 309 insertions(+)
Current branch master is up to date.
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 3.59 KiB | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
bash: [: To https://github.com/blah...
        refs/heads/master:refs/heads/master     88aff43..cf0c97c
Done: integer expression expected

  • How to avoid “Merge branch 'master' of ssh://gdcm.git.sourceforge.net/gitroot/gdcm/gdcm”
  • Git diff parse in shell script
  • Git's shortlog command is failing when run during a pre-commit hook
  • Extract the tree sha1 from a git commit
  • Why does “git submodule add …” write to stderr rather than stdout?
  • How to programmatically determine whether the Git checkout is a tag and if so, what is the tag name
  • How to programmatically determine the current checked out Git branch
  • indicate a password for git pull in shell script, without ssh?
  • 2 Solutions collect form web for “Check response of git push from shell script”

    Your condition check should have been something like:-

    #!/bin/bash
    
    if [[ "$(git push --porcelain)" == *"Done"* ]]
    then
      echo "git push was successful!"
    fi
    

    -eq is for integer comparisons, == is for string comparisons. The following illustrates the difference.

    [[ 00 -eq 0 ]] && echo "zero is zero, regardless of its representation"
    [[ 00 = 0 ]] || echo "00 and 0 are two different strings"
    

    git push returns a zero exit code on success, and non-zero on failure.

    So you can write:

    if git push
    then
      echo "git push succeeded"
    else
      echo "git push failed"
    fi
    
    Git Baby is a git and github fan, let's start git clone.