Обновление субмодуля Git перезаписано
Я работаю над проектом git с несколькими людьми, и мы включили внешнюю библиотеку как подмодуль git. У нас общий пульт, к которому мы регулярно подключаемся.
Поскольку мы впервые добавили этот подмодуль, в нем произошли некоторые изменения, поэтому я сделалgit submodule update --remote
обновить его до последней версии. Это сработало для меня, и я перенес это на наш общий пульт. Файл в местоположении подмодуля, где хранится ссылка на коммит, изменился:
-Subproject commit <old-commit-hash>
+Subproject commit <new-commit-hash>
Когда мои коллеги извлекают изменения из нашего общего удаленного пульта, они также получают измененный подмодуль, однако это, похоже, отличается от изменения в обычном файле, поскольку оно не перезаписывает старую версию (что я и ожидал), а появляется как меняются когда они бегутgit status
:
Changes not staged for commit:,
modified: src/submodule (new commits)
Так что файл внизу изменился (на новую ревизию, которую я нажал), но Git почему-то считает, чтолокальная версия моего коллеги новее. Тем не менее, это на самом деле старая версия, указывающая на предыдущую версию, которую до сих пор хранят мои коллеги.
Теперь мне нравятся мои коллеги, но иногда они не обращают внимания и все, что они делают, этоgit add .
или жеgit commit -a
который включает в себявсе изменения и, конечно, заменяет изменения в подмодуле ссылкой на старый коммит подмодуля.
Есть ли способ применить это обновление субмодуля для всех людей, которые извлекают данные с этого пульта? Может ли этот эталонный файл субмодуля рассматриваться как обычный файл, который просто обновляется нормально? Или я должен сказать своим коллегам уделять больше внимания и делатьgit submodule update
время от времени?
Я надеюсь, что мой вопрос ясен. Если нет, пожалуйста, спросите, и я постараюсь уточнить.