Nếu bạn chắc chắn rằng không ai thực hiện thay đổi đối với kho git của bạn và rằng bạn đang làm việc trên phiên bản mới nhất, git pull
thì không có nghĩa là một giải pháp trong trái tim bạn ...
Sau đó, đây có lẽ là những gì đã xảy ra, bạn đã sử dụng git commit --amend
Nó cho phép bạn kết hợp các thay đổi theo giai đoạn với cam kết trước đó thay vì cam kết nó như một ảnh chụp hoàn toàn mới. Nó cũng có thể được sử dụng để chỉ cần chỉnh sửa thông điệp cam kết trước đó mà không thay đổi ảnh chụp nhanh của nó.
Hướng dẫn ATLASSIAN: viết lại lịch sử
Tuy nhiên, không nên thực hiện git commit --amend
nếu bạn đã đẩy cam kết lên GitHub , điều này là do "sửa đổi không chỉ thay đổi cam kết gần đây nhất mà nó thay thế hoàn toàn. Đối với Git, nó sẽ trông giống như một cam kết hoàn toàn mới" có nghĩa là với nhà phát triển khác trên GitHub của bạn, lịch sử trông giống như A-> B-> C nhưng đối với bạn thì có vẻ như A-> B-> D, nếu GitHub cho phép bạn push
, mọi người khác sẽ phải tự sửa lịch sử của họ
Đây là lý do tại sao bạn nhận được thông báo lỗi ! [rejected] master -> master (non-fast-forward)
, nếu bạn biết rằng không ai rút được thay đổi mới nhất của bạn, bạn có thể làm git push --force
, điều này sẽ thay đổi lịch sử git trong repo công khai của bạn . Mặt khác ... bạn có thể thực hiện git pull
, nhưng tôi tin rằng điều này sẽ có kết quả tương tự như bạn đã không trải quagit commit --amend
, nó sẽ tạo ra một cam kết mới (ví dụ: lịch sử git sau khi kéo git: A-> B-> C-> D )
để biết thêm chi tiết: Cách thay đổi cam kết mới nhất của bạn