Bạn đang ở trên một nhánh chưa được sinh ra khi thêm mô đun con git


116

Tôi đang cố gắng thêm một vài mô hình con vào .vim/bundlesthư mục của mình và khi tôi cố gắng thêm repo đặc biệt này, Git cho tôi một lỗi lạ mà tôi chưa từng thấy trước đây:

$ 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 những gì 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 thử nghiệm (không thông qua lệnh mô đun con), nó hoạt động tốt và tạo các tệp dự kiến.

Câu trả lời:


210

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


2
Cảm ơn, điều đó đã lừa Ban đầu có một chút không rõ ràng vì tôi đã nhân bản vào .vim/bundle/vim-scalađường dẫn để xóa là.git/modules/.vim/bundle/vim-scala
matt b

2
Nếu bạn đang ở trên windows lưu ý rằng thư mục bên dưới .git / mô-đun có thể không hiển thị trừ khi bạndir /AH
paxos1977

13
Sau khi tôi thấy xóa .git/modules/path/to/submodulethư mục đó và cố gắng thêm lại mô hình con, 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 / subodule .
vẽ Noakes

1
@Drew Noakes xóa .vim / bundle / vim-scala được tạo sau lần chạy đầu tiên của mô đun con git add
Piotr Król

Trên các cửa sổ, bạn cũng có thể sử dụng các tùy chọn Windows Explorer (ở cùng nơi bạn sẽ chọn để xem các phần mở rộng tệp) để xem các thư mục ẩn trong GUI và xóa chúng.
dùng83358

13

Bạn cần thêm một mô hình con bên trong một repo hiện có, repo đó cần ở trạng thái để thêm và cam kết liên kết mô hình con, chính repo mô đun con phải có một cam kết để kiểm tra.

Bây giờ, bản thân mô đun con phải ổn nếu bạn có thể tạo một bản sao thông thường ở nơi khác. Tuy nhiên, có vẻ như submodule addphàn nàn nếu repo trống trong khi bản sao thì không. Anh chàng này gợi ý này có thể cứu vãn bằng cách chỉ chạy cùng submodule addlệnh một lần nữa.

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


Tôi đã xác minh tất cả những điều này. Khi tôi kiểm tra repo mong muốn vào một thư mục khác, nó có nhiều tệp và một masternhánh. Repo mà tôi đang cố gắng thêm cái này vào như một mô hình con nằm trên masternhánh, 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à điều kỳ lạ nhất là tôi có thể thêm các mô hình con khác tốt vào kho lưu trữ này .
matt b

Cũng kỳ lạ: sau fatalcảnh báo từ OP của tôi, git để lại một thư mục trống tại .vim/bundle/vim-scala. Tôi cũng nhận thấy rằng mặc dù .gitmoduleschưa được xử lý, nó đã thêm một số dòng đề cập đến repo github.com này .git/config, nhưng sau khi xóa chúng, tôi vẫn nhận được fatalthông báo lỗi tương tự .
matt b

7
+1 Argh! This guy suggests this is fixable by just running the same submodule add command again.. Tôi đã chiến đấu với vấn đề này khi cố gắng tìm một câu trả lời hợp lý và điều này cuối cùng đã khắc phục nó. Cái này dành cho git 1.8.0 trong MSYS trong khi tạo một mô hình con từ BitBucket, vì vậy nếu bạn ở trong tình huống tương tự, hãy thử điều này trước.
Aaron Newton

Thêm hai lần làm việc cho tôi, quá. Nhưng tôi không hiểu tại sao. Có lời giải thích nào không?
Elise

Thêm hai lần ở đây là tốt. Tôi rất muốn hiểu lý do tại sao
Vinicius Dantas

12

Lỗi này có thể xảy ra nếu bạn thêm một mô hình con không có masternhánh. Nếu bạn muốn sử dụng một nhánh khác khi thêm mô hình con ( developví dụ), 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 và do đó không có bất kỳ tệp và chi nhánh nào (trống), vì vậy git submodule add -b master <repo.git> <folder>đã giúp
vladkras

Đây là vấn đề của tôi, mô hình con của tôi chỉ có 2 nhánh, không ai trong số chúng là mastergiải pháp của bạn làm việc cho tôi.
Guerneen4 16/03/17

0

Như được ám chỉ bởi @ drew-noakes, điều này có thể được gây ra bằng cách cố gắng thêm một mô hình con bằng cách sử dụng tên thư mục được liệt kê trong tệp .gitignore của bạn .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.