Erlang shell command nl(module_name), as well as (obviously) c:nl/1 uses rpc:eval_everywhere/3 and code:load_binary/3, i.e. it loads the module code from local node on the entire cluster.
That's not even documented. Until I took a look at OTP sources, I assumed that it is just a networked version of l(module_name).
So, when you try to test new code on a couple of nodes in production cluster, putting the modules on them and invoking nl(module_name) in hope that it'll just reload the old code on the rest of the nodes, you'll find that you have the entire cluster updated. Good for you if your code isn't buggy.