2013-02-28 26 views
11

Quá trình của chúng tôi cho git là một hợp nhất định kỳ xuống nhánh chính của chúng tôi để các thay đổi có thể được hợp nhất trở lại các chi nhánh tính năng mới nhất của chúng tôi. Kể từ khi ra khỏi vòng mới nhất của sáp nhập từ một chi nhánh khác, chúng tôi đang chạy vào một vấn đề trong đó giải pháp là không rõ ràng.Tại sao cam kết không tuân theo lỗi cơ sở hợp nhất?

Chúng tôi có một kho lưu trữ có 19 mô-đun con trong đó. Khi chúng ta kết hợp tất cả các mô-đun con, chúng ta thấy những gì chúng ta tin là đầu ra mong đợi cho chúng ta biết các tập tin đang được sửa đổi, xung đột, vv. của đầu ra sau (chỉnh sửa để chỉ ra các vấn đề).

warning: Failed to merge submodule projects/foo1 (commits don't follow merge-base) 
warning: Failed to merge submodule projects/foo2 (commits don't follow merge-base) 
warning: Failed to merge submodule projects/foo3 (not fast-forward) 

Found a possible merge resolution for the submodule: 
931a61165f3b2079523a122477fa5f44c123406d: Comment of last merge 

If this is correct simply add it to the index for example by using: 

git update-index --cacheinfo 160000 931a61165f3b2079523a122477fa5f44c123406d "projects/foo3" 

which will accept this suggestion. 

Bây giờ, chúng tôi có thể chạy đề xuất git update-index lệnh. Nó sẽ làm cho git hạnh phúc cho một mô-đun con, nhưng chúng ta chưa bao giờ phải chạy nó trước đây. Vấn đề thực sự tồi tệ khi nhìn vào các mô-đun con foo1 và foo2 trong đó không có sự trợ giúp nào được hiển thị.

+0

Đối với mỗi sửa đổi của các mô-đun con, bạn cũng đã cam kết và đẩy repo gốc? – VonC

+0

Trước khi hợp nhất cả hai cây là hoàn toàn chức năng mà không có bất kỳ vấn đề của một cam kết bị mất trong bất kỳ submodule. Đó có phải là ý bạn không? – Peter

+0

Tôi có nghĩa là, khi bạn sửa đổi một submodule, bạn phải cam kết và đẩy, sau đó đi đến phụ huynh, cam kết và đẩy là tốt (vì SHA1 của submodule đã thay đổi). Tôi đã tự hỏi nếu bạn đã thực hiện bất kỳ sửa đổi nào cho các mô-đun con đó (và nếu có, nếu bạn đã thực hiện theo chuỗi cam kết đẩy), trước khi cố gắng hợp nhất repo gốc. – VonC

Trả lời

0

Trong bình luận trường hợp OP của bên dưới câu hỏi của anh biến mất:

Đối với những người duyệt bài này, trong khi tôi đã không chắc chắn 100% những gì đã xảy ra, tôi tin rằng đó là do một người dùng bằng tay loại bỏ các GIT_MERGE các tệp từ kho lưu trữ gốc của chúng và được đẩy. Bằng cách thủ công kết hợp mỗi submodule, đẩy những thay đổi và sau đó trong submodule gốc chạy

git commit -i -m "blah" . 

đã làm chúng tôi xuất hiện để khắc phục vấn đề. Git không bao giờ tuyên bố rằng chúng tôi cần phải cam kết trong submodule gốc nhưng nó xuất hiện, chúng tôi đã cần phải. Các lần hợp nhất tiếp theo cho đến nay dường như hoạt động chính xác.

Các vấn đề liên quan