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

#git #github #git-submodules

Вопрос:

При добавлении подмодуля в суперпроект git вы можете указать ветвь, скажем main.

 cd superproject
git submodule add -b main ~/myrepos/repo.git subA
 

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

ОБНОВЛЕНИЕ: Похоже, git в основном смотрит на то, отклоняется ли ГЛАВА подмодуля от записанной фиксации для него в суперпроекте, даже с такой опцией, как «игнорировать = грязно». Я предполагаю, что нет никакого способа указать вместо этого ГЛАВУ конкретного филиала? Это решило бы все мои проблемы. Я могу самостоятельно работать над ветвью разработки подмодуля в суперпроекте, но он обнаруживает изменения только тогда, когда ГЛАВА основной ветви отклонился от записанного хэша фиксации.

Комментарии:

1. Как вы сказали в обновлении, Git просто смотрит на текущую локальную головку в подмодуле. Если вы хотите работать над подмодулем, не затрагивая суперпроект, я бы сделал это в другой песочнице. Песочница, которую вы проверили как подмодуль внутри суперпроекта, предназначена для использования в суперпроекте, по крайней мере, так я понимаю ее философию.