Assume an existing Git-tracked module (M) with commits M1-M2-M3.
I have a Git repository for Application (A), with commits A1-A2-A3. The repository has M included as a submodule (
git submodule add URL DIRECTORY
subproject commit 187cac115b5f4fdeb39c25c79e882d30ee9624be
You can avoid having unmerged branches by deleting them when you no longer need them.
I would find your first solution strange, since M5 is a merge that basically has no added value. It pollutes your version history.
What I would do is:
old_something, push tags, and remove the branch B (also from the remote repo).
This way, the only interaction with the other guy's repo is that you create a new (temporary) branch and that he is left with a tag afterwards (no unmerged branch, but a tag. no real difference, but if you use unmerged branches for todo list, this solves your problem)
Actually, I would say that the situation with submodules is better than with branches of A. You are never polluting your version history by having unneeded merges now.