Comment mettre à jour un repo git contenant un sous-module?
-
07-07-2019 - |
Question
Après un certain temps, je voulais mettre à jour mon dépôt Git, puis quelque chose s’est mal passé. Quel est le bon moyen de sortir de cette situation?
mblsha@siruba:~/src/psi/ $ git status
iris: needs merge
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: src/common.cpp
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
#
# unmerged: iris
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# gupdate.sh
mblsha@siruba:~/src/psi/ $ git submodule status
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master)
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master)
+cf237ef8f3d9dc058dbde47e6973e6388608ce60 iris (heads/master)
mblsha@siruba:~/src/psi/ $ cd iris
mblsha@siruba:~/src/psi/iris/ $ cat .git/HEAD
cf237ef8f3d9dc058dbde47e6973e6388608ce60
La solution
En ce qui concerne les sous-modules git, presque tous les problèmes que vous rencontrez peuvent être résolus par:
1. deleting the submodule (rm -r iris)
2. recreating it again (git submodule update)
Évidemment, si vous avez apporté des modifications locales à votre sous-module, cela les effacera de façon permanente. Par conséquent, si vous avez des modifications locales, assurez-vous de les avoir appliquées en premier.
Autres conseils
J'ai posté une question similaire. ici sur stackoverflow et j'ai fini par y répondre moi-même, mais j'ai constaté que l'utilisation de git reset HEAD iris
fonctionnait pour mon problème de conflits de sous-modules.