Có một chi nhánh trên repo bên thứ 3 mà tôi muốn thêm làm thư mục phụ của repo của tôi. Tôi muốn có thể thực hiện thay đổi đối với mã của bên thứ ba đó, duy trì những thay đổi đó trong repo của tôi và vẫn có thể nhận được các bản cập nhật được thực hiện cho repo bên thứ ba. Về bản chất, tôi đang cố tạo một lớp phủ.Git subtree hợp nhất, nhưng giữ các thay đổi cục bộ?
Làm theo hướng dẫn here để sáp nhập subtree (mô tả chính xác những gì tôi đang cố gắng hoàn thành), tôi đã tạo một điều khiển từ xa trỏ đến repo bên thứ ba đó, tạo một chi nhánh địa phương tham chiếu đến nhánh xa mà tôi muốn, thực hiện một pull trên nhánh đó, và sử dụng read-tree để sao chép nội dung của nhánh nội bộ vào một thư mục con trong master.
Tôi đã cam kết và đẩy các thay đổi (tệp mới và chỉnh sửa cho các tệp hiện có) trong thư mục con này để làm chủ. Các thay đổi cũng đã được thực hiện đối với các tệp khác nhau trong nhánh thượng nguồn. Tôi đã có thể kéo các thay đổi xuống nhánh của tôi. Tuy nhiên, khi tôi cố hợp nhất như sau,
git merge --squash -s subtree --no-commit <my_branch>
Thay đổi cục bộ của tôi bị ghi đè bởi các thay đổi ở phía trên. Các tệp mới tôi đã tạo sẽ bị xóa và những thay đổi tôi đã thực hiện cho các tệp hiện có bị mất.
Tôi có làm điều gì đó sai hoặc là hành vi mong đợi không? Làm cách nào để giữ các thay đổi của tôi và vẫn hợp nhất các thay đổi từ thượng nguồn?
Tôi gặp vấn đề tương tự, bạn có tìm thấy giải pháp không? – gregseth
@gregseth Tôi xin lỗi, nhưng không. May mắn thay tôi đã không cần phải giải quyết nó. Tôi nên chạy một lúc khác vào nó đôi khi và đưa ra câu trả lời ở đây một lắc tốt hơn. Vui lòng cho tôi biết nếu bạn tìm thấy giải pháp phù hợp với mình! – Naenyn