2015-01-02 5 views
3

Предположим, что у меня есть подмодуль dir1/dir2 (созданный с помощью шагов, показанных ниже). Как восстановить подмодуль dir2 после его удаления?Восстановление удаленных подмодулей

git submodule update жалуется, что подмодуль не существует, а git reset HEAD --hard восстанавливает dir2, но не его содержимое. Я создаю подмодуль следующим образом:

mkdir dir1 
cd dir1/ 
mkdir dir2 

cd dir2/ 
touch 1.txt 
git init 
git add 1.txt 
git commit -m "test" 

cd .. 
git init 
git submodule add ./dir2/ 
git commit -m "adding submodule" 

rm -r dir2 
**** Now how do I restore dir2 and its contents? **** 
+0

'git subodule update --init' не делает трюк? – VonC

+0

@VonC: Нет. Я получаю сообщение об ошибке «fatal: repository» dir1/dir2 «не существует» – artella

+0

А что, если вы 'mkdir dir1/dir2' перед обновлением подмодуля git --init?? Кроме того, какую версию Git вы используете? – VonC

ответ

1

Инициализацию GIT репозиторий в dir2 (cd dir2; git init) не делает dir2 подмодуль.

Просто введите dir2 вложенное репо, которое будет проигнорировано любым родительским репо.
Удаление dir2 означает, что у вас нет прямого способа получить его содержимое.

Вы могли бы сделать git submodule add /another/path/dir2 с dir2 РЕПО- вне из dir1.
Тогда можно было бы восстановить dir2.

+0

Просто добавьте, для настройки, о которой вы упоминали выше, ваша оригинальная команда 'git subodule update --init' восстанавливает' dir2' – artella

Смежные вопросы