Не может избавиться от подмодуля мерзавца

Я добавил некоторые шаблоны Haml к своим направляющим 3 проекта с

git clone git://github.com/psynix/rails3_haml_scaffold_generator.git lib/generators/haml

только для нахождения, когда я пытался отредактировать некоторые из тех файлов, что это было подмодулем, таким образом, я не мог фиксировать изменения, которые я внес в lib/generators/haml каталог. Теперь каждый раз I git status, Я добираюсь

# On branch master
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#   modified:   lib/generators/haml
#
no changes added to commit (use "git add" and/or "git commit -a")

но git add lib/generators/haml не имеет никакого эффекта. Я действительно просто хочу иметь файлы, не подмодуль, но я нахожу подмодуль невозможным избавиться от:

> git rm --cached lib/generators/haml
rm 'lib/generators/haml'
> git status

# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#   deleted:    lib/generators/haml
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#   lib/generators/

> git commit -m "Removed submodule"

[master 02ae4c7] Removed submodule
 1 files changed, 0 insertions(+), 1 deletions(-)
 delete mode 160000 lib/generators/haml

> git status

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#   lib/generators/
nothing added to commit but untracked files present (use "git add" to track)

> git add lib/generators/haml
> git status

# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#   new file:   lib/generators/haml
#
# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#   modified:   lib/generators/haml

> git commit -m "Re-added lib/generators/haml"

[master c966912] Re-added lib/generators/haml
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 160000 lib/generators/haml

> git status

# Changed but not updated:
#   (use "git add ..." to update what will be committed)
#   (use "git checkout -- ..." to discard changes in working directory)
#
#   modified:   lib/generators/haml

Дополнительный git adds бесполезны. Если я пробую git rm -rf lib/generators/haml, Я добираюсь

fatal: git rm: 'lib/generators/haml': Operation not permitted

Это просто не умрет! Я искал, как удалить подмодули, но в этом случае, существует нет .submodules файл, и при этом нет никакого упоминания о подмодуле в .git/config. Все же, если я работаю git submodule update, Я добираюсь

No submodule mapping found in .gitmodules for path 'lib/generators/haml'

Я удалил каталог, но я получаю те же результаты! Что продолжается? Сделайте я должен создать a .gitmodules файл только для удаления подмодуля?

14
задан Community 23 May 2017 в 11:51
поделиться

2 ответа

Если нет подмодуля, возможно ли, что он (т.е. 'haml') на самом деле не является подмодулем?

git clone git://github.com/psynix/rails3_haml_scaffold_generator.git lib/generators/haml

Значит: создайте lib/generators/haml каталог, и проверьте в нем мастер-ветку git://github.com/psynix/rails3_haml_scaffold_generator.git.

Тот факт, что вы можете сделать git status не из корня вашего нового репо ( lib/generators/haml), а тремя уровнями выше (где находится lib), означает, что вы клонировали репо внутри репо.

Оба репо могут работать независимо, но вы должны добавить lib/generators/haml в .gitignore родительского репо (как в хите SO question).

6
ответ дан 1 December 2019 в 14:43
поделиться

Подмодуль отображается в статусе git как измененный, если в нем есть неотслеживаемые файлы. Если вы вызовете git diff lib / generators / haml , вы, скорее всего, увидите что-то вроде этого:

diff --git a/lib/generators/haml b/lib/generators/haml
index 3019fec..653c59a 160000
--- a/lib/generators/haml
+++ b/lib/generators/haml
@@ -1 +1 @@
-Subproject commit 653c59ad72925c9ccbde67e8e484e15d4b6dd25d
+Subproject commit 653c59ad72925c9ccbde67e8e484e15d4b6dd25d-dirty

Это означает, что внутри этого подмодуля остались некоторые неотслеживаемые файлы. Их нельзя добавить с помощью команд в родительском проекте; вместо этого вы должны перейти в sumbodule и добавить их (или добавить записи в .gitignore ) ... Или вы можете просто игнорировать сообщение о состоянии.

Последняя версия git (кажется, 1.7.1) показывает эту информацию в статусе:

# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   lib/generators/haml (untracked content)
6
ответ дан 1 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: