Git/Débogage

< Git


Un fichier du .gitignore apparait malgré tout dans ceux à commiterModifier

C'est certainement que le fichier avait été commité avant d'être ajouté au .gitignore. Il faut donc le supprimer dans un commit puis regarder à nouveau s'il apparait, et si c'est le cas le faire disparaitre avec git rm --cached nom_du_fichier.

Un fichier commité voit ses retours chariot changés à tortModifier

git config auto.crlf false

cannot checkout in the current repository stateModifier

Il y a des fichiers créés qui doivent être supprimés ou archivés avant de pouvoir créer une nouvelle branche.

error: bad index file sha1 signature, fatal: index file corruptModifier

Le dépôt a certainement été copié manuellement au lieu d'être cloné.

error: ... Permission deniedModifier

Un problème de permissions est survenu. Si elles sont bien définies pour le compte utilisé, et que le projet utilise Docker, relancer les conteneurs.

error: could not open '.git/rebased-patches' for reading: Permission deniedModifier

Erreur lors d'un rebase. Cela peut survenir avec Docker Desktop, dans ce cas :

  • Lancer rebase -i débloque la situation.
  • Sinon, lancer le rebase dans un conteneur où le volume du dépôt est partagé.
  • Sinon, recréer la branche à partir de celle de base, soit par cherry-pick, soit "stash -u" sur le contenu de la branche à rebaser, la supprimer, puis "stash pop" sur une nouvelle branche du même nom.
  • Sinon, remplacer le rebase par un merge.

error: opening .git/config: Permission deniedModifier

Lors du clonage, au pire on peut télécharger le dépôt.

error: could not restore untracked files from stashModifier

Se produit lors d'un git stash pop ou git stash apply vers des fichiers en conflit. Pour que le stash les remplace :

git checkout stash --

error: pathspec 'MaBranche1' did not match any file(s) known to gitModifier

Il faut récupérer les nouvelles branches du serveur avec :

git fetch

error: src refspec master does not match anyModifier

Il faut faire un git add * avec au moins un changement.

error: The branch 'ma-branche' is not a strict subset of your current HEAD.Modifier

Voir Git/Branches#Effacer_une_branche.

error: Your local changes to the following files would be overwritten by mergeModifier

Pour sauvegarder le travail local :

 git reset HEAD~1; git stash

Pour supprimer le travail local :

 git reset --hard

failed to create a new commitModifier

Reconfigurer :

git config --global user.name "Your Name"

failed to create a pull requestModifier

Faire un "git push" avant, pour que le serveur connaisse la branche.

failed to push some refs to 'MonDepot1.git' hint: Updates were rejected because the tip of your current branch is behindModifier

git push -f 'MonDepot1.git'

voire

git push -f origin

failed to sync this branch because due to unmerged filesModifier

Le dépôt distant possède certains fichiers qui sont plus à jour que le local, et vice-versa.

Si le message provient d'une interface graphique, essayer de la fermer et de lancer la synchro en shell, avec git push. Cela peut donner un message plus précis, ex :

remote: error: By default, updating the current branch in a non-bare repository is denied, because it will make the index and work tree inconsistent

Dans ce cas, on peut modifier le fichier "config" du serveur distant en ajoutant "bare=true".

Sinon, il faut créer une nouvelle branche pour faire un "pull request".

Sinon, copier les fichiers locaux dans un autre dossier (parent), et recloner avant de les replacer.

fatal: Could not read from remote repositoryModifier

  • Host key verification failed : la clé SSH du dépôt à cloner ne correspond pas à la locale. Par exemple si le clonage a lieu dans un Docker, ce dernier doit avoir accès une clé connue du dépôt (au moyen d'un volume partagé avec l'hôte).

fatal: index-pack failedModifier

git pull n'a pas été lancé depuis le répertoire du dépôt.

fatal: remote origin already existsModifier

Pour redéfinir origin il faut le supprimer d'abord :

git remote rm origin

fatal: repository 'http://MonServeur/MonDepotEnLigne.git' not foundModifier

Si le dossier existe et est accessible en HTTP, mais que le clone, pull ou push ne le trouve pas :

  • Vérifier que l'utilisateur a les droits d'écriture (pour Windows avec IIS, c'est II_IUSRS).
  • Si le dépôt est sur le LAN, éviter HTTP : git clone file:////MonServeur/c$/inetpub/wwwroot/MonDepotEnLigne.git.

fatal: This operation must be run in a work treeModifier

Lors d'un git add sur un dépôt initialisé avec -- bare, il faut soit uniquement lui soumettre ses modifications (sans possibilité de le cloner, avec git remote add origin[1]), soit définir un répertoire de branche avec --work-tree.

fatal: unable to access 'https://MonServeur/MonDepotEnLigne.git/': SSL certificate problem: self signed certificateModifier

Lors du clonage, remplacer HTTPS par HTTP, ou bien désactiver la vérification du certificat SSL :

 git -c http.sslVerify=false clone https://MonServeur/MonDepotEnLigne.git

Please, commit your changes or stash them before you can mergeModifier

Précéder le pull d'un stash :

 git stash
 git pull

This file is emptyModifier

Si un fichier apparait comme modifié, mais que son diff affiche ce message, c'est que seules ses métadonnées ont changé (ex : date de mise à jour).

warning: LF will be replaced by CRLFModifier

git config --global core.autocrlf true

You must edit all merge conflicts and then mark them as resolved using git addModifier

Survient lors d'un :

git rebase --continue

non précédé d'un :

git add -A

Bien sûr les fichiers en conflit doivent faire partie de cet ajout.

you need to resolve your current index firstModifier

git reset --merge

Your branch is behind 'xxx' by y commits, and can be fast-forwardedModifier

Dans ce cas il peut être préférable d'effacer la veille branche du serveur pour ne garder que la locale, qui sera synchronisée sur le serveur ensuite.

RéférencesModifier