Я добавил некоторые шаблоны 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 add
s бесполезны. Если я пробую 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
файл только для удаления подмодуля?
Если нет подмодуля, возможно ли, что он (т.е. '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).
Подмодуль отображается в статусе 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)