Tôi đang cố gắng để hiểu sự khác biệt giữa
git push --force
và
git push --force-with-lease
Tôi đoán là cái sau chỉ đẩy vào điều khiển từ xa nếu điều khiển từ xa không có cam kết mà chi nhánh địa phương không có ?
--force-with-lease
tương tự như hướng dẫn so sánh và trao đổi trên các CPU hiện đại: người muốn trao đổi xảy ra sẽ cung cấp giá trị mong đợi và giá trị mới. Hệ thống thực hiện trao đổi so sánh giá trị mong đợi với giá trị hiện tại thực và trao đổi khi và chỉ khi hai giá trị bằng nhau. Với git push
, giá trị mong đợi là bất cứ thứ gì có trong tên theo dõi từ xa, ví dụ, git push --force-with-lease origin X
gửi của riêng bạn origin/X
cùng với giá trị mong muốn mới; origin
Git cho bạn biết nếu nó đã trao đổi hay không.
origin
đã trao đổi, bạn đã hoàn thành. Nếu không, bạn có thể chạy git fetch origin
để chọn giá trị hiện tại mới , xử lý lại các thay đổi của mình nếu cần và chạy một phép so sánh và hoán đổi bắt buộc khác để thử lại.
git help push
có các trường hợp sử dụng giải thích mục đích của nó (về cơ bản để giữ cho bạn không bỏ qua một thay đổi mà ai đó vừa đẩy lên). Điều tôi không rõ ràng với tôi là cách hoạt động của nhánh theo dõi từ xa. Nhưng có lẽ thông thường, nó sẽ cần phải nhìn chính xác như thế nào khi bạn nhìn lần trướcfetch
hoặcpull
không có cam kết mới.