Git : Determine if branch is in a merge conflict state
Use git ls-files -u
. It prints unmerged files. If it prints nothing, there are no unmerged files.
However, while that's a direct answer for the question you asked "as asked", using git pull
in a script is a bit dicey: pull
is a convenience script that runs fetch
for you, and then (depending on how you direct it and/or have configured your repo) runs either merge
or rebase
for you. Given that you are writing a script that has a particular goal in mind, you should most likely be using lower-level commands that do more-specific things. For instance, you might use git fetch
followed by (as Etan Reisner suggested in a comment) git merge --ff-only
so as to never attempt a merge.
Based on the answer given by torek, here is a ready-to-use snippet:
CONFLICTS=$(git ls-files -u | wc -l)
if [ "$CONFLICTS" -gt 0 ] ; then
echo "There is a merge conflict. Aborting"
git merge --abort
exit 1
fi