Это работает с нашими библиотеками, работающими с GIT v1.7.1, где у нас есть репозиторий DEV и репозиторий LIVE. Сами репозитории - не что иное, как оболочка для упаковки ресурсов для проекта. все подмодули.
LIVE никогда не обновляется преднамеренно, однако файлы кэша или несчастные случаи могут произойти, оставляя грязное хранилище. Новые субмодули, добавленные в DEV, также должны быть инициализированы в LIVE.
Хранилище пакетов в DEV
Здесь мы хотим вытащить все восходящие изменения, о которых мы еще не знаем, затем мы обновим наш репозиторий пакетов.
# Recursively reset to the last HEAD
git submodule foreach --recursive git reset --hard
# Recursively cleanup all files and directories
git submodule foreach --recursive git clean -fd
# Recursively pull the upstream master
git submodule foreach --recursive git pull origin master
# Add / Commit / Push all updates to the package repo
git add .
git commit -m "Updates submodules"
git push
Хранилище пакетов в LIVE
Здесь мы хотим получить изменения, которые зафиксированы в репозитории DEV, но не неизвестны вышестоящие изменения.
# Pull changes
git pull
# Pull status (this is required for the submodule update to work)
git status
# Initialize / Update
git submodule update --init --recursive
git reset --hard
не работает, сначала попробуйте указать удаленную ветку с помощьюgit reset --hard origin/<branch_name>
.