09-03-2025 · rock288

So sánh git push --force và git push --force-with-lease

1. git push --force

  • Chức năng: Ghi đè toàn bộ lịch sử commit của nhánh từ xa bằng lịch sử commit của nhánh local.
  • Nguy cơ: Có thể vô tình ghi đè và mất các commit quan trọng đã được đẩy lên từ người khác.
  • Khi nào dùng?
    • Chỉ nên dùng khi chắc chắn rằng không ai khác đã push lên nhánh từ xa kể từ lần cuối cùng bạn pull.

2. git push --force-with-lease

  • Chức năng: Chỉ force push nếu nhánh từ xa vẫn giống với trạng thái mà bạn đã fetch lần gần nhất.
  • Cơ chế bảo vệ: Nếu có ai đó đã push commit mới lên nhánh từ xa mà bạn chưa fetch về, lệnh sẽ báo lỗi thay vì ghi đè.
  • Khi nào dùng?
    • Khi muốn đảm bảo rằng bạn không vô tình ghi đè commit của người khác.

3. Nên dùng cái nào?

  • Ưu tiên sử dụng --force-with-lease để tránh mất commit từ người khác.
  • Chỉ dùng --force trong trường hợp bạn chắc chắn rằng không có ai khác push lên nhánh từ xa kể từ lần cuối cùng bạn pull.

4. Ví dụ sử dụng

sh
# Push force thông thường (có thể gây mất commit từ xa)
git push --force

# Push force an toàn hơn (kiểm tra trạng thái nhánh trước khi ghi đè)
git push --force-with-lease

Tóm lại: Nếu có thể, hãy luôn dùng git push --force-with-lease để tránh mất dữ liệu quan trọng!