Check that pushes preserve first-parent ancestry In addition to checking that a push is fast-forward, make sure that the old head can be reached through first-parent pointers only. This prevents tracking branches which have been pulled with merge instead of rebase from being pushed by mistake.