Tôi đã thiết lập một repo "chính" không từ xa và nhân bản nó vào máy tính của mình. Tôi đã thực hiện một số thay đổi cục bộ, cập nhật kho lưu trữ cục bộ của mình và đẩy các thay đổi trở lại repo từ xa. Mọi thứ đều ổn cho đến thời điểm đó.
Bây giờ, tôi đã phải thay đổi một cái gì đó trong repo từ xa. Sau đó, tôi đã thay đổi một cái gì đó trong repo địa phương của tôi. Tôi nhận ra rằng việc thay đổi repo từ xa là không cần thiết. Vì vậy, tôi đã cố gắng git push
từ repo địa phương của tôi đến repo từ xa của tôi, nhưng tôi đã gặp một lỗi như:
Để ngăn bạn khỏi mất lịch sử, các bản cập nhật không chuyển tiếp đã bị từ chối Hợp nhất các thay đổi từ xa trước khi đẩy lại. Xem phần 'Lưu ý về chuyển tiếp nhanh'
git push --help
để biết chi tiết.
Tôi nghĩ rằng có lẽ một
git push --force
sẽ buộc bản sao cục bộ của tôi đẩy các thay đổi sang từ xa và làm cho nó giống nhau. Nó không bắt buộc cập nhật , nhưng khi tôi quay lại repo từ xa và thực hiện một cam kết, tôi nhận thấy rằng các tệp chứa các thay đổi lỗi thời (những cái mà repo từ xa chính trước đây đã có).
Như tôi đã đề cập trong các ý kiến cho một trong những câu trả lời :
[Tôi] đã cố gắng ép buộc, nhưng khi quay trở lại máy chủ chính để lưu các thay đổi, tôi sẽ bị dàn dựng lỗi thời. Vì vậy, khi tôi cam kết các kho lưu trữ không giống nhau. Và khi tôi cố gắng sử dụng git đẩy một lần nữa, tôi cũng gặp lỗi tương tự.
Làm thế nào tôi có thể khắc phục vấn đề này?
git push --force
thực sự là một cách hợp lệ khác để đẩy mạnh và sẽ đẩy các nhánh cũng như git push origin master --force
với mặc định của Git push.default config settings
, mặc dù các nhánh cụ thể được đẩy khác nhau giữa các phiên bản Git trước 2.0 so với 2.0.
git push --force
hoạt động tốt trong những ngày này, FWIW ...
git push --force-with-lease
hoạt động thậm chí còn tốt hơn :), nó sẽ từ chối cập nhật một chi nhánh trừ khi đó là trạng thái mà bạn mong đợi. (xem developer.atlassian.com/blog/2015/04/force-with-lease )
git push -force
cách cẩn thận hơn .