Frage

git fetch goes over the network and fetches the latest snapshot from origin/master to the local host. It does not merge but just fetches the snapshot. Right after git fetch if we do git status, it will tell us whether (local) master is ahead or behind origin/master.

All I want is a git command that will just tell us whether the content of (local) master is the equivalent of the content of origin/master. Obviously, it has to go over the network to determine that but it should not print any messages about its findings (like the output of git fetch or any other git command) and finally, just output only yes/true (if equivalent) or no/false (if different) or something similar.

Is there any git internal commands or api's which could do this?!

War es hilfreich?

Lösung 2

I finally used the following snippet of code.

output=`git fetch --dry-run 2>&1`

if [ "$output" != "" ]; then
    echo "***********************************************"
    echo "*                    ERROR                    *"
    echo "* Your git source directory is not up to date *"
    echo "***********************************************"
fi

Had a problem parsing the output of git fetch --dry-run but found that the console messages belong to stderr Git: unable to redirect/parse the output of 'git fetch --dry-run' command

Andere Tipps

You can use the -q flag to silence git fetch:

git fetch -q
if [ "$(git rev-parse origin/master)" == "$(git rev-parse master)" ]; then
    echo yes
else
    echo no
fi
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top