To be sure that we can always roll back a change, and to avoid merge conflicts when working in a team, we need to never use any destructive command. A destructive command is one that has an impact on the previous commits. Commands such as rebase, squash, rename, are thus discouraged on pushed commits. Anyway, if you wanted to run them, git would warn that you should use the --force flag in order to perform it.