Using the Bash set command changes options for the current shell. Changes to shell options are NOT inherited by a subshell.  The reason being that the script author may want to change the environment options for the subshell!
These examples exit to the parent shell without printing 'hai'
( set -e; git push; echo 'hai' )
Same:
( set -e; git push; printf '\nhai' )
Same:
( set -e
git push
printf '\nhai'
)
Creating a Compond Command with the Operators '&& or ||' following a subshell keeps the subshell open until all commands resolve.
Use these two commands to find bash manual section quoted:
man bash
/errexit
Exit immediately if a pipeline (which may consist of a single simple command), a list, or a compound command (see SHELL GRAMMAR above),  exits with a non-zero status.  The shell  does not exit if the command that fails is part of the command list immediately following a while or until keyword, part of the test following the if or elif reserved words, part of any command executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command's return value is being inverted with !.  If a compound command other than a subshell returns a non-zero status because a command failed while -e was being ignored, the shell does not exit.  A trap on ERR, if set, is executed before the shell exits.  This option applies to the shell environment and each subshell environment separately (see COMMAND EXECUTION ENVIRONMENT above), and may cause subshells to exit before executing all the commands in the subshell.
This part of the bash manual mentions it again:
The  ERR  trap is not executed if the failed command is part of the command
   list immediately following a while or until keyword, part of the test in an if statement, part of a command  executed in a && or || list except the command following the final && or ||, any command in a pipeline but the last, or if the command's return value is being inverted using !.  These are the 
  same conditions obeyed by the errexit (-e) option.
Finally, this section of the Bash manual indicates set -e is inherited by subshells of POSIX enabled Bash:
Subshells spawned to execute command substitutions inherit the value of the -e option from the parent shell.  When not in posix mode, bash clears the -e option in such subshells.