Tôi có hai chi nhánh A
và B
. Cả hai chứa một submodule (trong thư mục sub
), tuy nhiên tại các cam kết khác nhau (mà không nhanh chóng chuyển tiếp từ một đến khác).Làm thế nào để giải quyết xung đột submodule git nếu submodule không được khởi tạo
A B
|/
BASE
Tôi đã kiểm tra A
, nhưng mô-đun con chưa được khởi tạo. Bây giờ tôi hợp nhất B
và tôi nhận được một cuộc xung đột trên submodule.
$ git status
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: sub
Phát hành git checkout --ours sub
không làm gì (nếu submodule được khởi tạo nó hoạt động, cũng git checkout-index -f --stage=2 -- sub
không hoạt động). git add sub
gây ra lỗi error: pathspec 'sub' did not match any file(s) known to git.
.
$ git diff sub
diff --cc sub
index 533da4e,ab2af77..0000000
--- a/sub
+++ b/sub
@@@ -1,1 -1,1 +1,1 @@@
- Subproject commit 533da4ea00703f4ad6d5518e1ce81d20261c40c0
-Subproject commit ab2af775ec467ebb328a7374653f247920f258f3
++Subproject commit 0000000000000000000000000000000000000000
git submodule init -- sub
không làm gì cả. Ngoài ra git submodule update --init --force -- sub
không hoạt động: Skipping unmerged submodule sub
.
Vì vậy, làm thế nào tôi có thể giải quyết xung đột submodule này (mà không hủy hợp nhất và thử lại sau khi khởi tạo submodule)?
Vâng "Điều này hoạt động giống như việc hợp nhất thông thường", tuy nhiên 'git checkout --ours' và' git add' không hoạt động. Làm cách nào để "cung cấp nội dung chính xác trên đường dẫn đó"?- "Điều duy nhất cần thiết là để có một repo tại đường dẫn đó với đúng cam kết id trong HEAD" - nhưng làm thế nào tôi có thể đạt được điều đó như khởi tạo submodule không hoạt động? – MrTux
Một mô-đun con chỉ là một repo. "Điều duy nhất cần thiết là có một ** repo ** tại đường dẫn đó". 'git clone u: // r/l -b $ đường dẫn yourbranch/to/repo; git thêm đường dẫn/đến/repo; git commit -m done'. – jthill
Tùy chọn này phù hợp với tôi. Tôi chỉ đơn giản là nhân bản phiên bản đúng của repo mất tích ở vị trí submodule và sau đó hợp nhất đã đi qua. –