"Ви знаходитесь на гілці ще не народилися", додаючи підмодуль git


116

Я намагаюся додати декілька підмодулів до свого .vim/bundlesкаталогу, і коли я намагаюся додати саме цей репо-Git, дає мені дивну помилку, яку я ніколи не бачив:

$ 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'

Будь-яка ідея, що може викликати це?

Якщо я клоную те саме репо в тестовий каталог (не через команду підмодуля), він справно працює і створює очікувані файли.

Відповіді:


210

Щоб виправити цю помилку, слід видалити папку тим самим шляхом до внутрішнього .git/modules/каталогу підмодуля . Ця помилка може виникнути, коли URL вперше був невірним для підмодуля, коли доданий підмодуль.


2
Дякую, що зробив трюк. Спочатку було трохи не очевидним, що оскільки я клонував .vim/bundle/vim-scalaшлях до видалення, це.git/modules/.vim/bundle/vim-scala
мат b

2
Якщо ви перебуваєте у вікні Windows, зауважте, що каталог під .git / модулями може не відображатися, якщо виdir /AH
paxos1977

13
Після того, як я побачу видалення цього .git/modules/path/to/submoduleкаталогу і спробую повторно додати підмодуль, я отримую помилку . Наступний шлях ігнорується одним із ваших .gitignore файлів: шлях / до / підмодуль .
Дрю Ноакс

1
@Drew Noakes видалити .vim / bundle / vim-scala створений після першого запуску підмодулю git add
Piotr Król

У вікнах ви також можете скористатися параметрами Провідника Windows (там же, де ви б побачили розширення файлів), щоб побачити приховані папки в графічному інтерфейсі та видалити їх.
користувач83358

13

Вам потрібно додати подмодуль всередині існуючого репо, що репо повинен бути в змозі додати і зафіксувати посилання подмодуль, і подмодуль репо сам по собі повинен мати зобов'язання перевірити.

Тепер сам субмодуль repo повинен бути нормальним, якщо ви можете створити звичайний клон в іншому місці. Однак, схоже, submodule addнарікає, якщо РЕПО порожній, а клон - ні. Цей хлопець припускає, що це можна виправити, лише запустивши ту ж submodule addкоманду ще раз.

Якщо внутрішній репо НЕ порожній, перевірте репозиторій , який ви хочете утримувати подмодуль. Перейдіть у той самий каталог, де ви запускалися git submodule addта запустіть git status, і git branchпереконайтеся, що ваш репо-репортаж має принаймні одну гілку, створену і не знаходиться в дивному стані.


Я перевірив усі ці речі. Коли я перевіряю потрібне репо в інший каталог, він має багато файлів та masterгілку. РЕПО, до якого я намагаюся додати це, як підмодуль знаходиться на masterгілці, не має очевидних проблем (статус повертає деякі змінені файли, але це все), і найдивнішим з усіх є те, що я можу до цього сховища додати інші підмодулі .
мат б

Також дивно: після fatalпопередження від мого ОП, git залишає порожній dir at .vim/bundle/vim-scala. Я також зауважив, що, хоч .gitmodulesце і не торкається, він додав деякі рядки, що посилаються на це репортаж github.com .git/config, але після вилучення тих, хто все ще отримує те саме fatalповідомлення про помилку.
мат б

7
+1 Арг! This guy suggests this is fixable by just running the same submodule add command again.. Я боровся з цією проблемою, намагаючись знайти розумну відповідь, і це остаточно вирішило її. Це було для git 1.8.0 під MSYS під час створення підмодуля з BitBucket, тому якщо ви знаходитесь в тій же ситуації, спробуйте це спочатку.
Аарон Ньютон

Додавання двічі працювало і для мене. Але я не розумію, чому. Будь-яке пояснення?
Еліза

Додавання тут також двічі. Я хотів би зрозуміти, чому все-таки
Вініцій

12

Ця помилка може статися, якщо ви додаєте підмодуль, який не має masterгілки. Якщо ви хочете використовувати іншу гілку під час додавання підмодуля ( developнаприклад), ви можете скористатися такою командою:

git submodule add -b <branch> <repository>

1
У моєму випадку репо була створена, тому не мала файлів і гілок (була порожня), тому git submodule add -b master <repo.git> <folder>допомогла
vladkras

Це була моя проблема, у моєму підмодулі було лише 2 гілки, жодна з них не є masterвашим рішенням для мене.
Guerneen4

0

Як згадується в @ drew-noakes, це може бути викликано спробою додати підмодуль за допомогою імені каталогу, яке вказано у вашому файлі .gitignore .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.