2012-08-09 32 views
109

Tôi đang cố gắng thêm một vài mô-đun con vào thư mục .vim/bundles của mình và khi tôi cố gắng thêm repo đặc biệt này, Git mang lại cho tôi một lỗi lạ đã xem trước:"Bạn đang ở trên chi nhánh chưa được sinh ra" khi thêm git submodule

$ git submodule add -f git://github.com/derekwyatt/vim-scala.git .vim/bundle/vim-scala 
fatal: You are on a branch yet to be born 
Unable to checkout submodule '.vim/bundle/vim-scala' 

Bất kỳ ý tưởng nào có thể gây ra điều này?

Nếu tôi sao chép cùng một repo vào một thư mục kiểm tra (không thông qua lệnh submodule), nó hoạt động tốt và tạo các tệp được mong đợi.

Trả lời

194

Để khắc phục lỗi đó, bạn nên xóa thư mục có cùng đường dẫn đến mô-đun con trong thư mục .git/modules/. Lỗi này có thể xảy ra khi url không chính xác cho mô-đun con cho lần đầu tiên khi mô-đun con được thêm vào.

+2

Cảm ơn, điều đó đã xảy ra. Có một chút không rõ ràng lúc đầu tiên kể từ khi tôi được nhân bản để '.vim/bundle/vim-scala' đường dẫn để xóa là' .git/modules /.vim/bundle/vim-scala' –

+2

Nếu bạn đang ở trên cửa sổ lưu ý rằng thư mục dưới .git/modules có thể không hiển thị trừ khi bạn 'dir/AH' – paxos1977

+13

Sau khi tôi thấy xóa' .git/modules/path/to/submodule' thư mục và cố gắng để thêm lại submodule, tôi nhận được lỗi _Đường dẫn sau bị bỏ qua bởi một trong các tệp .gitignore của bạn: path/to/submodule_. –

12

Bạn cần phải thêm một submodule bên một repo hiện có, repo mà cần phải được ở trong tình trạng để thêm & cam kết liên kết submodule, các submodule repo bản thân phải có một cam kết để kiểm tra.

Bây giờ, bản mô-đun con repo chính nó phải là ok nếu bạn có thể tạo một bản sao thường xuyên ở nơi khác. Tuy nhiên, có vẻ như submodule add phàn nàn nếu repo trống trong khi sao chép thì không. This guy cho thấy điều này có thể khắc phục được bằng cách chỉ chạy lại lệnh submodule add.

Nếu repo bên trong là không trống, hãy kiểm tra repo bạn muốn chứa submodule. Thay đổi vào cùng thư mục nơi bạn chạy git submodule add và chạy git statusgit branch để xác minh rằng repo chứa của bạn có ít nhất một chi nhánh được tạo và không ở trạng thái lạ.

+0

Tôi đã xác minh tất cả những điều này. Khi tôi kiểm tra repo mong muốn đến thư mục khác, nó có nhiều tệp và một nhánh 'master'. Repo Tôi đang cố gắng thêm cái này vào như một mô-đun con là trên nhánh 'master', không có vấn đề rõ ràng (trạng thái trả về một số tệp đã sửa đổi, nhưng đó là tất cả), và kỳ lạ nhất là tôi có thể thêm các mô-đun con khác vào kho lưu trữ này. –

+0

Cũng lẻ: sau khi cảnh báo 'fatal' từ OP của tôi, git để lại một thư mục rỗng tại' .vim/bundle/vim-scala'. Tôi cũng nhận thấy rằng mặc dù '.gitmodules' không bị ảnh hưởng, nó thêm một số dòng đề cập đến repo github.com này vào' .git/config', nhưng sau khi loại bỏ chúng tôi vẫn nhận được thông báo lỗi 'fatal'. –

+6

+1 Argh! 'Anh chàng này cho thấy điều này có thể khắc phục được bằng cách chỉ cần chạy lại cùng một mô-đun bổ sung submodule.'. Tôi đã chiến đấu với vấn đề này cố gắng tìm một câu trả lời hợp lý và điều này cuối cùng đã sửa nó. Điều này là dành cho git 1.8.0 dưới MSYS trong khi tạo một submodule từ BitBucket, vì vậy nếu bạn đang ở trong tình trạng tương tự, hãy thử điều này trước tiên. –

10

Lỗi này có thể xảy ra nếu bạn thêm một mô-đun con không có chi nhánh master. Nếu bạn muốn sử dụng một chi nhánh khác khi thêm các submodule (develop chẳng hạn), bạn có thể sử dụng lệnh sau:

git submodule add -b <branch> <repository> 
+1

Trong trường hợp của tôi repo mới được tạo ra và do đó không có bất kỳ tập tin và chi nhánh (trống), vì vậy 'git submodule add -b master ' đã giúp – vladkras

+0

Đây là vấn đề của tôi submodule của tôi chỉ có 2 chi nhánh không ai trong số họ là một 'master' giải pháp của bạn làm việc cho tôi. – Guerneen4

0

Như đã nói ở bởi @ đã thu hút-Noakes, điều này có thể được gây ra bằng cách cố gắng thêm một submodule sử dụng tên thư mục được liệt kê trong tệp .gitignore của bạn.

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