Вы игнорируете подмодуль git в своем.gitignore или передать его в свое РЕПО?



я добавил подмодуль к моему проекту в project_dir/vendor/submodule_one теперь каждый раз, когда я запустить git status Я modified: vendor/submodule_one (new commits).



мой вопрос, что лучший способ справиться с этим? Я добавляю vendor/submodule_one-папку в мои .gitignore как мой основной проект не должен знать о специфике моего подмодуля?



или когда я изменяю и фиксирую изменения в своем подмодуле, мне также нужно сделать коммиты в моем основном проекте?



только начало работы с подмодулями и не может показаться чтобы найти много информации, помимо их настройки.

405   1  
git

1 ответ:

нет, вам не нужно добавлять свой подмодуль к вашему .gitignore: то, что родитель увидит из вашего подмодуля-это gitlink (a специальная запись, mode 160000).

это означает: любое изменение, непосредственно внесенное в подмодуль, должно сопровождаться фиксацией в Родительском каталоге.
Таким образом, родительский каталог будет записывать правильную фиксацию для состояния подмодуля: эта фиксация является" gitlink", упомянутым выше;

вы можете подробнее об этой политике читайте в разделе "обновление подмодулей git (истинная природа подмодулей)".
Основная идея подмодулей-это компонентный подход, где вы ссылаетесь на другие РЕПО на коммиты. Но если вы что-то измените в этих подмодулях, вам также нужно обновить эти ссылки в Родительском РЕПО.


обратите внимание, что с Git 2.13 (Q2 2017), в то время как не игнорируя gitlink, вы все равно можете игнорировать подмодуль с:

git config submodule.<name>.active false

на "игнорировать новые коммиты для подмодуля git".


Примечание: с Git 2.15.х/2.16 (1 кв. 2018), не обращая внимания подмодуль является более точным.
"git status --ignored --untracked " не останавливался на рабочем дереве отдельного проекта, который встроен в игнорируемый каталог и перечисленные файлы в этом другом проекте, вместо того, чтобы просто показывать сам каталог как игнорируемый.

посмотреть commit fadb482 (25 октября 2017) by Иоганнес Schindelin (dscho).
(слитый Junio C Hamano--gitster-- на commit da7996a, 06 ноя 2017)

status: не путайте подмодули в исключенных каталогах

мы тщательно передают exclude флаг treat_directory() функция, чтобы мы могли указать, что файлы в нем исключаются, а не не отслеживаются при рекурсии.

но мы еще не рассматривали подмодули таким же образом.

из-за этого, git status --ignored --untracked С подмодуля submodule в gitignored tracked/ покажет подмодуль в "Untracked files раздел", например,

On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    tracked/submodule/

Ignored files:
  (use "git add -f <file>..." to include in what will be committed)

    tracked/submodule/initial.t

вместо этого мы хотели бы, чтобы он показывал подмодуль в "Ignored files" раздел:

On branch master
Ignored files:
  (use "git add -f <file>..." to include in what will be committed)

    tracked/submodule/

Comments

    Ничего не найдено.