
A force push can rewrite a branch in a way that makes someone else’s local history unexpectedly diverge. The immediate goal is to make the next change safer and easier to explain. Begin with the branch state and the people who depend on it.
Why this deserves attention
Git’s official documentation separates the working tree, index and commit history because each command acts on a different part of that model. A workflow is easier to trust when teammates can see what changed, why it changed and how to recover if an assumption was wrong. Good habits matter more than memorising every flag. The risk is not the command’s name but the shared ownership of the branch and whether others based work on its existing commits. A clear explanation of the intended result is usually more valuable than a long sequence of clever commands.
A practical way forward
Ask who uses the branch, why the rewrite is needed and how its old tip can be recovered; prefer a normal follow-up commit when possible. Read git status before acting and inspect the diff afterwards. If the change affects a shared branch, communicate the plan before rewriting or merging history.
Picture it in a real situation
A private feature branch after an interactive rebase is different from a release branch already used by a deployment pipeline. A small, named change is easier for a teammate to review. Record the commit or branch involved so a later investigation can reconstruct the choice.
What to avoid
Avoid force pushing a shared main branch to escape a merge conflict; a clear revert or fix is easier to audit. Check whether the branch is shared and whether the command can discard work. A recovery step should be understood before a risky history operation begins.
Takeaway
Make the next change small, reviewable and recoverable. Explain the intent beside the result.
Sources and further reading: Official Git documentation; Git worktree manual.