I am writing a bash script to do some automation. Part of the script involves navigating to a local repo, switching to the local master branch, then pulling the remote master to update the local master branch with the latest code.
Does anyone know if there's a way I can programatically determine if the pull resulted in a merge conflict so that I can bail at that point and not execute the rest of the script?
Any help / info is appreciated, thanks!
Based on the answer given by torek, here is a ready-to-use snippet:
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 runsfetch
for you, and then (depending on how you direct it and/or have configured your repo) runs eithermerge
orrebase
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 usegit fetch
followed by (as Etan Reisner suggested in a comment)git merge --ff-only
so as to never attempt a merge.This lists files with a merge conflict: