Dans un référentiel git, j'ai configuré mon file .gitmodules pour referencer un référentiel github:
[submodule "src/repo"] path = src/repo url = repourl
quand je «git statut» sur ce repo, il montre:
On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: src/repo (new commits)
Si je cd dans src / repo et git status sur repo, il est dit qu'il n'y a rien à commettre.
Pourquoi mon repository git de haut niveau se plaint-il?
C'est parce que les loggings Git qui commettent (pas une twig ou une label, exactement un commit représenté dans le hachage SHA-1) doivent être vérifiés pour chaque sous-module. Si vous modifiez quelque chose dans le sous-module dir, Git le détectera et vous invitera à valider ces changements dans le repoisitory de niveau supérieur.
Exécutez git diff
dans le référentiel de niveau supérieur pour montrer ce qui a réellement changé Git pense. Si vous avez déjà effectué certains commit dans votre sous-module (donc "clean" dans le sous-module), il signale le changement de hachage du sous-module.
$ git diff diff --git a/src/repo b/src/repo index b0c86e2..a893d84 160000 --- a/src/repo +++ b/src/repo @@ -1 +1 @@ -Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea +Subproject commit a893d84d323cf411eadf19569d90779610b10280
Sinon, il affiche -dirty
hash change que vous ne pouvez pas mettre en scène ou commettre dans le référentiel de niveau supérieur. git status
prétend également que le sous-module a un contenu non suivi / modifié.
$ git diff diff --git a/src/repo b/src/repo --- a/src/repo +++ b/src/repo @@ -1 +1 @@ -Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea +Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea-dirty $ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) (commit or discard the untracked or modified content in submodules) modified: src/repo (untracked content) no changes added to commit (use "git add" and/or "git commit -a")
Pour mettre à jour les loggings de validation qui doivent être extraits pour le sous-module, vous devez giter le sous-module en plus de valider les modifications dans le sous-module:
git add src/repo
Je me suis heurtée à la même class de problème et j'ai pu utiliser la solution proposée par @AugustinAmenabar dans la section des commentaires de la réponse acceptée. Ma configuration était un peu plus complexe, j'ai donc ajouté le drapeau --recursive
pour mettre toutes les dependencies à jour.
git submodule update src/repo --recursive