2012-08-31 6 views
15

Tôi đang cố thêm một mô-đun con đã tồn tại (kho lưu trữ từ xa git khác). Như tôi đã không tìm kiếm trước khi làm thế nào để làm điều đó một cách chính xác, tôi nghĩ rằng tôi đã messed lên kho của tôi và tôi cần một số trợ giúp để sửa chữa nó một lần nữa.Thêm một mô-đun con không thể xóa khỏi chỉ mục

Tôi đã xóa tất cả các phần liên quan khỏi tệp .gitmodules và .git/config liên quan đến các mô-đun con tôi muốn xóa. Tôi cũng đã xác minh rằng không có thư mục mô-đun bên trong thư mục .git/của tôi.

Tuy nhiên, khi tôi chạy lệnh git rm --cached path_to_submodule, được thông báo sau được hiển thị:

 
fatal: pathspec 'path_to_submodule' did not match any files 

Như lệnh trước đó thất bại, khi tôi cố gắng thêm một lần nữa các submodule cùng với các định nghĩa mới, chạy lệnh git submodule add [email protected]:repo.git , đây là thông điệp hiển thị:

 
'repo' already exists in the index 
+0

Tôi đã cố thêm một mô-đun con có cùng tên của một tệp đã tồn tại trong chỉ mục. –

Trả lời

32

cách duy nhất mà thông điệp ('repo' already exists in the index) có thể được hiển thị là nếu 'repo' vẫn còn tồn tại trong chỉ mục (xem this chapter on submodule):

$ rm -Rf rack/ 
$ git submodule add [email protected]:schacon/rack.git rack 
'rack' already exists in the index 

You have to unstage the rack directory first. Then you can add the submodule: 

$ git rm -r rack 
$ git submodule add [email protected]:schacon/rack.git rack 

Ngay cả khi 'rack' không phải là mô-đun con, nếu có, nó sẽ ngăn việc khai báo một mô-đun con cùng tên.

1

Có thể xảy ra, khi sáp nhập với lỗi, tay xóa các thư mục của submodule, hay cái gì khác, giống như Hallileo Comet

  1. trong tập tin .gitmodules - xóa các liên kết đến submodule (toàn phần với tên submodule)

  2. trong tập tin .git\config - xóa các liên kết đến submodule, như trong bước trước

  3. trong thư mục .git\modules - xóa thư mục với đường dẫn tương đối giống với r con đường elative của "vấn đề" mô-đun

  4. đảm bảo, rằng thư mục của submodule không phải là tồn tại nữa

  5. thì:

    $ git submodule add -f --name <name> <git://path_1.git> <path_2>

    nơi: Tên - tên của submodule như u muốn, có thể bằng tên repo của bạn; - đường dẫn đến repo nguồn con (ví dụ - github, vv), - đường dẫn tương đối đến thư mục mà submodule sẽ cư trú

    điều này cho phép u thêm submodule trong đường dẫn hoặc với tên vẫn còn trong chỉ mục, nhưng không tự nhiên còn sống.

tôi đã không tìm thấy bất kỳ phương pháp để loại bỏ những liên kết này chết từ chỉ số, nhưng khi buộc

1

Nếu đầu ra thêm một submodule mới là:

'FolderName' already exists in the index 

Mẹo các lệnh tiếp theo

git ls-files --stage 

Kết quả sẽ giống như sau:

160000 d023657a21c1bf05d0eeaac6218eb5cca8520d16 0 FolderName 

Sau đó, để loại bỏ các mũi chỉ số thư mục:

git rm -r --cached FolderName 

Cố gắng một lần nữa thêm submodule

+0

cảm ơn vì đã làm việc cho tôi –

0

'submodules/uasdk-clib' đã tồn tại trong chỉ mục

git rm - các mô-đun con nhỏ - uasdk-clib

git submodule add -b china/release/16.8.0 -f ssh: //[email protected] submodules/uasdk-clib