If apex has old aaaa (bbbb has parent) commit, and receive cccc (bbbb has parent) it will add cccc behind aaaa. Then it will call server to found hole between cccc and aaaa but has aaaa has been deleted server will not found it and will walk around all commits.
We can use the same parent to detect a force push and delete all old commits.
But in case of rebase the top commit can change too.
Push force with same parent is done, but change base branch commit will continue to break