« Git/Problèmes connus » : différence entre les versions
Aucun résumé des modifications |
|||
Ligne 2 : | Ligne 2 : | ||
== Un fichier du .gitignore apparait malgré tout dans ceux à commiter == |
== Un fichier du .gitignore apparait malgré tout dans ceux à commiter == |
||
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 |
C'est certainement que le fichier avait été commité avant d'être ajouté au .gitignore. Il faut donc le supprimer dans un commit (sans qu'il soit dans .gitignore sinon sa suppression sera ignorée) puis regarder à nouveau s'il apparait. Si c'est le cas le faire disparaitre avec <code>git rm --cached nom_du_fichier</code>. |
||
== Un fichier commité voit ses retours chariot changés à tort == |
== Un fichier commité voit ses retours chariot changés à tort == |
Version du 22 juillet 2021 à 17:55
Un fichier du .gitignore apparait malgré tout dans ceux à commiter
C'est certainement que le fichier avait été commité avant d'être ajouté au .gitignore. Il faut donc le supprimer dans un commit (sans qu'il soit dans .gitignore sinon sa suppression sera ignorée) puis regarder à nouveau s'il apparait. Si c'est le cas le faire disparaitre avec git rm --cached nom_du_fichier
.
Un fichier commité voit ses retours chariot changés à tort
git config auto.crlf false
git reset --hard ne nettoie pas tout
git stash -u && git stash clear
cannot checkout in the current repository state
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 corrupt
Le dépôt a certainement été copié manuellement au lieu d'être cloné.
error: ... Permission denied
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 denied
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 denied
Lors du clonage, au pire on peut télécharger le dépôt.
error: could not restore untracked files from stash
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 git
Il faut récupérer les nouvelles branches du serveur avec :
git fetch
error: src refspec master does not match any
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.
Voir Git/Branches#Effacer_une_branche.
error: Your local changes to the following files would be overwritten by merge
Pour sauvegarder le travail local :
git reset HEAD~1; git stash
Pour supprimer le travail local :
git reset --hard
failed to create a new commit
Reconfigurer :
git config --global user.name "Your Name"
failed to create a pull request
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 behind
git push -f 'MonDepot1.git'
voire
git push -f origin
failed to sync this branch because due to unmerged files
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 repository
- 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 failed
git pull
n'a pas été lancé depuis le répertoire du dépôt.
fatal: remote origin already exists
Pour redéfinir origin
il faut le supprimer d'abord :
git remote rm origin
fatal: repository 'http://MonServeur/MonDepotEnLigne.git' not found
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 tree
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 certificate
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
File mode changed from 100644 to 100755
Si certains fichiers apparaissent dans les diff car leurs métadonnées ont été modifiées (et pas leur contenu), c'est qu'une application a changé leurs inodes. Pour éviter cela :
git config core.filemode false
Please, commit your changes or stash them before you can merge
Précéder le pull
d'un stash
:
git stash
git pull
This file is empty
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 CRLF
git config --global core.autocrlf true
You must edit all merge conflicts and then mark them as resolved using git add
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 first
git reset --merge
Your branch is behind 'xxx' by y commits, and can be fast-forwarded
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.