Understanding Git Rebase: An Alternative to Merging