Yeah, any error messages from git would be siphoned off into the void. You can instead change devnull to be a file instead, or if you just want to print it, something like
io = IOBuffer()
readlines(pipeline(`git pull --ff`, stderr = io))
git_err = remove_decorations(String(take!(io)))
println(git_err)
should work.