The target commit may have parents and descendants.
it needs to replace the old commit in place,
so it\'s not as simple as cherry
c
No, you can't do that.
The point of SHA-1 is to prevent changes like these. The whole git architecture depends on the assumption that SHA-1 uniquely identify the object in all git repository. No way to workaround this (not without redesigning everything, that is).
The details are explained in the Git Magic book.