Giả sử tôi có chi nhánh được gọi là master
và chi nhánh có tên là upstream_lib
.Làm thế nào để buộc một tổ tiên chung trong một hợp nhất git?
Chi nhánh master
có một thư mục con lib
dựa trên mã trên chi nhánh upstream_lib
; thay đổi trong upstream_lib
được hợp nhất (với chiến lược subtree) đến chi nhánh master
định kỳ. Thư mục lib
trong master
có một số sửa đổi của riêng nó mà không có trong upstream_lib
. Tuy nhiên, giả sử hai nhánh không có lịch sử chung (vì kho lưu trữ vừa được di chuyển sang git) hoặc cơ sở hợp nhất không chính xác vì việc hợp nhất trong upstream_lib
đã bị đè bẹp, đã có một số rebasing hoặc bất cứ điều gì.
Câu hỏi đặt ra là: đưa ra một tập hợp thay đổi mới trên upstream_lib
, cách buộc hợp nhất xem là tổ tiên chung một bản sửa đổi cụ thể của upstream_lib
?
Nó hoạt động hoàn hảo, cảm ơn! – Artefacto
Tôi đoán vấn đề duy nhất là không có lịch sử được chia sẻ hoặc cam kết với chi nhánh upstream_lib, nhưng tôi có thể sống với điều đó. – Artefacto
Rất vui khi biết điều đó! Nếu bạn muốn ép buộc tổ tiên được chia sẻ, bạn có thể tạo một commit trống ban đầu và rebase cả 'master' và' upstream_lib' vào đó. Giả sử tất nhiên 'upstream_lib' là nhánh của riêng bạn chứ không phải từ xa. Tuy nhiên, nếu việc nhập ban đầu của 'upstream_lib' vào thư mục' lib' chỉ là 'cp' chứ không phải là một phép hợp nhất (như được mô tả tại http://www.kernel.org/pub/software/scm/git/docs/ howto/using-merge-subtree.html), bạn vẫn sẽ gặp vấn đề bạn mô tả. –