Có thể ai đó vui lòng cung cấp một ví dụ đơn giản về điều gì sẽ khiến Git đẩy tới một repo trung tâm thất bại vì không thể xảy ra chuyển tiếp nhanh? Các repo địa phương và nhà nước trung ương của repo cần phải trông như thế nào để điều này xảy ra? Thực sự gặp sự cố khi trực quan hóa việc này ...Điều gì có nghĩa là Git push không thể nhanh chóng được hợp nhất?
Trả lời
Tôi giả sử bạn đang nhìn thấy vấn đề này:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '/Users/mayoff/t/test/central'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Dưới đây là như thế nào “Cập nhật phi nhanh về phía trước đã bị từ chối” vấn đề xảy ra.
Giả sử Alice và Bob đang làm việc trên một dự án. Họ có một kho lưu trữ, và có một kho lưu trữ trung tâm mà cả hai đều đẩy và kéo. Ban đầu, ba kho giống như thế này:
Giờ đây, Alice và Bob cả làm một số công việc. Mỗi cam kết một sự thay đổi khác nhau để kho địa phương của họ:
Tiếp theo, Alice đẩy sự thay đổi của mình để các repo Trung ương:
Tiếp theo, Bob cố gắng đẩy. Chi nhánh chính của trung tâm repo tại cam kết 3. Đẩy của Bob cố gắng cập nhật nó đến điểm tại cam kết 4. Vì cam kết 4 không có cam kết 3 là tổ tiên, cần phải hợp nhất, nhưng git push
không thực sự hợp nhất. Nó chỉ làm "chuyển tiếp nhanh", nơi mà vị thầy mới có thầy cũ làm tổ tiên. Vì vậy, Bob nhận được lỗi vì anh ấy đang cố gắng thúc đẩy thứ gì đó yêu cầu hợp nhất thực sự, không phải là tiến nhanh.
Để đẩy thành công, Bob phải đầu tiên lấy mới cam kết từ repo Trung ương:
và ông đã để nhập các thay đổi của mình (cam # 4) với những thay đổi của Alice (cam # 3) , tạo ra một mới cam kết rằng có cả cam kết như tổ tiên:
Các lấy và hợp nhất có thể được thực hiện theo hai lệnh (git fetch
tiếp theo git merge
) hoặc trong một lệnh (git pull
).
Bây giờ Bob có thể đẩy thành công, vì repo trung tâm thấy rằng tổng thể mới có tổng thể cũ làm tổ tiên.
Lưu ý rằng bây giờ Alice thiếu các cam kết của Bob. Nếu cô ấy cam kết nhiều hơn với repo của mình và cố gắng đẩy trước khi kéo từ repo trung tâm, cô ấy sẽ nhận được lỗi không chuyển tiếp nhanh và cô ấy sẽ phải tìm nạp và hợp nhất để sửa lỗi, giống như Bob đã làm.
Tôi chỉ nhận ra rằng tất cả các mũi tên của tôi đều sai hướng. Oh well.Hy vọng rằng nó đủ rõ ràng. –
Vâng, bây giờ họ cho thấy sự phát triển trong thời gian và không phải là cây git. Điều đó cũng không quá tệ. – erikbwork
nhất quán là chìa khóa. và chỉ theo hướng tiến bộ thời gian thực sự có thể thoải mái hơn cho một số người. – araqnid
Chỉ cần thực hiện cam kết trên repo trung tâm trên cùng một chi nhánh mà không cần kéo đến địa phương của bạn. Sau đó cam kết cục bộ và cố gắng đẩy.
- 1. Điều gì có thể truy cập/không thể truy cập có nghĩa là trong git?
- 2. Điều gì có nghĩa là "đồng bộ hóa nhanh" không được đồng bộ hóa?
- 3. Không thể gỡ bỏ nhanh chóng nhiều file trong Git
- 4. FETCH_HEAD trong Git có nghĩa là gì?
- 5. Zotonic- nơi có thể nhanh chóng được tìm thấy
- 6. ý nghĩa của "thất bại" trong IIS bảo vệ thất bại nhanh chóng là gì?
- 7. "FATAL: Lỗi tính cơ sở hợp nhất" nghĩa là gì?
- 8. Git xung đột rebase không có gì để hợp nhất?
- 9. git rebase và git push: không nhanh về phía trước, tại sao lại sử dụng?
- 10. Không thể push to kho git
- 11. Có cách nào nhanh chóng để có được mọi liên kết giữa hai thực thể không?
- 12. lỗi git push không có xung đột
- 13. Git "Ảnh chụp nhanh" là gì?
- 14. Điều gì "không thể được so sánh bởi trình so khớp thời gian" nghĩa là gì?
- 15. Điều gì có nghĩa là futex_?
- 16. Git: Các số được báo cáo bằng `git fetch` có nghĩa là gì?
- 17. Kết quả của `git push origin` là gì?
- 18. Điều gì: :: có nghĩa là trong C++?
- 19. Điều gì có nghĩa là nói loại được "đóng hộp"?
- 20. Không thể nhanh chóng lớp: org.apache.naming.java.javaURLContextFactory
- 21. git pull --rebase upstream & git push origin không từ chối chuyển tiếp nhanh?
- 22. Eclipse + Git - nghĩa là "dàn dựng" nghĩa là gì?
- 23. điều gì có nghĩa là tĩnh mới?
- 24. Điều gì có nghĩa là "Lisp có thể được viết trong chính nó?"
- 25. git merge không hợp nhất
- 26. Git: Dừng git push
- 27. Điều gì: = có nghĩa là trong vb.net?
- 28. Tôi có thể hợp nhất các tệp trong git không?
- 29. Chiến lược hợp nhất của git là gì?
- 30. lỗi hợp nhất git push, nhưng git pull đã được cập nhật. reclone cố gắng, cùng một vấn đề
Câu hỏi hay! Nhiều người không hiểu điều đó, nhưng hầu hết các câu hỏi tôi tìm thấy trong bài viết này đều không được viết tốt. – erikbwork