git push --force: overwrite remote không kiểm tra gì — nếu teammate đã push commits mới lên remote mà bạn chưa fetch, bạn sẽ overwrite và mất work của họ.
git push --force-with-lease: kiểm tra remote ref trước khi overwrite — chỉ force push nếu remote ref khớp với lần fetch cuối của bạn. Nếu ai đó đã push thêm → lệnh fail, bạn được nhắc fetch trước.
bash
# An toàn:
git push --force-with-lease origin feature/my-branch
# Error nếu remote đã thay đổi:
# ! [rejected] feature/my-branch -> feature/my-branch (stale info)
# Sau đó:
git fetch origin
git rebase origin/feature/my-branch
git push --force-with-lease origin feature/my-branchEnforce trong team — dùng git alias để thành thói quen:
bash
git config --global alias.pushf "push --force-with-lease"
# Dùng: git pushf origin feature/branchKết hợp branch protection trên shared branches để chặn force push hoàn toàn ở phía server.
Cẩn thận: --force-with-lease vẫn không an toàn nếu bạn vừa git fetch (remote ref match nhưng có thể còn work của người khác chưa pushed).