Подмодули git с измененным и неотслеживаемым контентом - почему и как его удалить? - PullRequest
47 голосов
/ 03 ноября 2011

Вот как выглядит мой git status 'результат:

# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   vim/bundle/pathogen (modified content)
#   modified:   vim/bundle/sparkup (untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

выполняется git diff vim показывает следующее:

diff --git a/vim/bundle/pathogen b/vim/bundle/pathogen
--- a/vim/bundle/pathogen
+++ b/vim/bundle/pathogen
@@ -1 +1 @@
-Subproject commit fcf77f5101f3e589ce006c40ad3a0432735a05cf
+Subproject commit fcf77f5101f3e589ce006c40ad3a0432735a05cf-dirty
diff --git a/vim/bundle/sparkup b/vim/bundle/sparkup
--- a/vim/bundle/sparkup
+++ b/vim/bundle/sparkup
@@ -1 +1 @@
-Subproject commit 04a81b41f116a19184359a6f8685c192f5c36c70
+Subproject commit 04a81b41f116a19184359a6f8685c192f5c36c70-dirty

Почему один не отслежен, другой изменен,что означает разница?Но самое главное: как это произошло и как от этого избавиться?

Ответы [ 6 ]

57 голосов
/ 03 ноября 2011

Один из отслеживаемых файлов в vim/bundle/pathogen был каким-то образом изменен. В подмодуле vim/bundle/sparkup также есть некоторый неотслеживаемый (и не проигнорированный) контент. В любом случае, способ выяснить, что изменено / не отслежено, - перейти в каталог подмодулей и запустить git status. (В случае неотслеживаемых файлов в подмодуле это часто продукт сборки, который не был добавлен в .gitignore в апстриме.)

44 голосов
/ 18 апреля 2012

Добавьте ignore = dirty к каждому проблемному разделу submodule в .gitmodules файлах, помещенных в корень репо. Пример:

[submodule "vim/bundle/nerdtree"]                                               
  path = vim/bundle/nerdtree                                                    
  url = https://github.com/scrooloose/nerdtree.git                              
  ignore = dirty

Как видно из NilsH Как игнорировать изменения в подмодулях git . Найден благодаря Синхронизации плагинов с подмодулями git и патогеном vimcast.

24 голосов
/ 17 сентября 2013

Зайдите в каталог подмодуля и убедитесь, что ничего не создается (какой-то вывод) без вашего ведома.

cd submoduledir/
git status

Если вы видите здесь неотслеживаемые файлы, простосделать это, чтобы удалить их:

git reset --hard HEAD
git clean -fxd
4 голосов
/ 10 марта 2016

Если вы действительно уверены, что хотите просто сделать это (я управляю пакетами vim с подмодулями pathogen и git и кое-каким образом мне удалось получить некоторые папки с тегами в репозиториях - и они просто должны были пойти), вы можете выполнить циклчерез субмодули и удалить неотслеживаемые файлы.

cd YOUR_REPO_WITH_SUBMODULES/
git submodule foreach git clean -f -d

-f для принудительного использования, -d для удаления каталогов

Вы можете проверить документы здесь: https://git -scm.ком / документы / ГИТ-чистый

2 голосов
/ 16 ноября 2018

Я столкнулся с такой же ситуацией:

gongzelong: shadowsocks-android gongzelong $ git status На главном филиале Ваша ветка обновлена ​​с помощью origin / master.

Измененияне подготовлено для фиксации: (используйте «git add ...» для обновления того, что будет зафиксировано) (используйте «git checkout - ...» для отмены изменений в рабочем каталоге) (фиксация или удаление неотслеживаемого или измененного содержимого в подмодулях)

    modified:   core/src/main/jni/badvpn (modified content)
    modified:   core/src/main/jni/libancillary (modified content)
    modified:   core/src/main/jni/libevent (modified content)
    modified:   core/src/main/jni/redsocks (modified content)
    modified:   core/src/overture/src/github.com/shadowsocks/overture (modified

content)

изменения не добавлены в коммит (используйте "git add" и / или "git commit -a")

Когда яgit diff, чтобы увидеть, что это за изменения:

gongzelong:shadowsocks-android gongzelong$ git diff
diff --git a/core/src/main/jni/badvpn b/core/src/main/jni/badvpn
--- a/core/src/main/jni/badvpn
+++ b/core/src/main/jni/badvpn
@@ -1 +1 @@
-Subproject commit 58f8a8883e51e5cb97391c4b6733ce255bf11f95
+Subproject commit 58f8a8883e51e5cb97391c4b6733ce255bf11f95-dirty
diff --git a/core/src/main/jni/libancillary b/core/src/main/jni/libancillary
--- a/core/src/main/jni/libancillary
+++ b/core/src/main/jni/libancillary
@@ -1 +1 @@
-Subproject commit 311e5d14f593f16c785bc6605220517eb1f21f6b
+Subproject commit 311e5d14f593f16c785bc6605220517eb1f21f6b-dirty
diff --git a/core/src/main/jni/libevent b/core/src/main/jni/libevent
--- a/core/src/main/jni/libevent
+++ b/core/src/main/jni/libevent
@@ -1 +1 @@
-Subproject commit f29f07bc8c43eec96f227e6f6eede32b3af66168
+Subproject commit f29f07bc8c43eec96f227e6f6eede32b3af66168-dirty
diff --git a/core/src/main/jni/redsocks b/core/src/main/jni/redsocks
--- a/core/src/main/jni/redsocks
+++ b/core/src/main/jni/redsocks
@@ -1 +1 @@
-Subproject commit 274334f14839431ae003774d99c3d1de337afff4
+Subproject commit 274334f14839431ae003774d99c3d1de337afff4-dirty
diff --git a/core/src/overture/src/github.com/shadowsocks/overture b/core/src/overture/src/github.com/shadowsocks/overture
--- a/core/src/overture/src/github.com/shadowsocks/overture
+++ b/core/src/overture/src/github.com/shadowsocks/overture
@@ -1 +1 @@
-Subproject commit a9b5a94e215c1beadfe11442994b550e1e81f8d6
+Subproject commit a9b5a94e215c1beadfe11442994b550e1e81f8d6-dirty

Я исправил это так:

gongzelong: shadowsocks-android gongzelong $ git Обновление подмодуля --init gongzelong: shadowsocks-android gongzelong $ git подмодуль foreach git reset --hard Ввод 'core / src / main / jni / badvpn'

HEAD теперь на 58f8a88 Исправить ошибку вычисления контрольной суммы UDP.Ввод 'core / src / main / jni / libancillary' HEAD теперь на 311e5d1 Fix C ++ building Ввод 'core / src / main / jni / libev' HEAD теперь на 5213419 Слияние pull-запроса № 2 от Mygod / master Ввод 'core /src / main / jni / libevent 'HEAD теперь на f29f07bc Обновление до 2.1.8 Ввод' core / src / main / jni / libsodium 'HEAD теперь на c5e43f4c Обновление версии примера dotnet Ввод' core / src / main / jni / mbedtls'HEAD теперь на 4f0929189. Обновите номер версии до 2.6.1. Ввод' core / src / main / jni / pcre '. HEAD теперь на 222bbf4. Слияние "pcre: заставляет замолчать неинтересные предупреждения".am: 0e44fd55f8 Вход в HEAD 'core / src / main / jni / redsocks' теперь находится на 274334f Использовать стандартный макрос препроцессора ANDROID (# 1) Ввод HEAD 'core / src / main / jni / shadowsocks-libev' HEADсейчас на 57e74ea Исправить ошибку в обход ввода 'core / src / overture / src / github.com / shadowsocks / overture' HEAD теперь на a9b5a94 Отформатировать исходный код gongzelong: shadowsocks-android gongzelong $ gongzelong: shadowsocks-android gongzelong $git status На главном филиале Ваша ветка обновлена ​​с «origin / master».

нечего коммитить, рабочее дерево чистое

Ссылка: git-discard-submodule-изменения

1 голос
/ 05 апреля 2012

Как утверждает автор патогена в FAQ , вы можете игнорировать теги глобально:

git config --global core.excludesfile '~/.cvsignore'
echo tags >> ~/.cvsignore
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...