git không (theo mặc định) cho phép bạn đẩy tới nhánh bất kỳ thứ gì "tua lại" mẹo chi nhánh. Nói cách khác, nếu người đứng đầu chi nhánh hiện tại không phải là cha mẹ trực tiếp hoặc tổ tiên của nhánh chi nhánh thì việc đẩy sẽ bị từ chối.
Bạn vẫn có thể thử đẩy bằng cách sử dụng tùy chọn -f
để git push
hoặc bằng cách sử dụng refspec có dấu '+' hàng đầu, ví dụ: git push origin +mybranch:mybranch
.
Thông thường kho từ xa sẽ không cho phép điều này xảy ra vì bạn có nguy cơ mất cam kết nếu những người khác có thể bừa bãi các mẹo chi nhánh không bao gồm các cam kết mà họ không có cục bộ.
Bạn có thể ghi đè hành vi này bằng cách thay đổi tham số cấu hình receive.denyNonFastForwards
trên kho lưu trữ từ xa (giả sử rằng bạn có quyền truy cập vào vùng chứa từ xa).
Nếu bạn không có quyền truy cập như vậy, bạn có thể có thể thực hiện việc này bằng cách xóa nhánh từ xa và tạo lại nó.
ví dụ:
git push origin :mybranch
git push origin mybranch
Lưu ý rằng nhiều phiên bản gần đây của git bao gồm một tham số cấu hình receive.denyDeletes
sẽ, nếu được thiết lập, ngăn chặn workaround nguy hiểm tiềm tàng này từ làm việc.
Nguồn
2009-04-30 20:41:34
Tốt, tôi không biết về denyNonFastForwards: Tôi cho rằng bạn cần một cái móc để thực thi điều đó. – araqnid