Supprimez le fichier du référentiel mais conservez-le localement


369

J'ai un dossier que j'aimerais supprimer dans mon référentiel distant. Je voudrais le supprimer, mais garder le dossier sur mon ordinateur



Veuillez examiner les questions connexes suggérées pendant que vous rédigez la vôtre - le double était probablement l'une des deux premières.
Cascabel


Réponses:


637
git rm --cached -r somedir

Organisera la suppression du répertoire, mais ne touchera à rien sur le disque. Cela fonctionne également pour un fichier, comme:

git rm --cached somefile.ext

Ensuite, vous voudrez peut-être ajouter somedir/ou somefile.extà votre .gitignorefichier afin que git n'essaye pas de le rajouter.


24
Et puis ajoutez le chemin vers .gitignore pour que git n'essaye pas de vous faire l'ajouter plus tard.
grossvogel

3
Cela entraînera-t-il la suppression de (fichiers dans) le répertoire lorsqu'il tirera de la télécommande?
bstpierre

Pas quand il tire; les fichiers resteront supprimés localement pendant le processus de fusion automatique de l'extraction. Après cela, une poussée entraînera la suppression des fichiers côté serveur.
Walter Mundt

7
Que se passe-t-il si j'ai une troisième télécommande? Les fichiers correspondants seront-ils supprimés lors d'une prochaine traction? Je demande parce que je pense que c'est un cas d'utilisation assez courant, c'est-à-dire archiver certains fichiers dans le référentiel, réaliser à une date ultérieure qu'ils divergent entre les télécommandes, pour une bonne raison, et qu'ils n'auraient jamais dû être dans le référentiel en premier lieu, vouloir pour résoudre ce problème en conservant toutes les extractions locales exactement comme elles sont, mais en supprimant les fichiers du référentiel.
Bobby Jack

6
Pour les fichiers simples, vous pouvez le fairegit rm --cached path/to/file
Travis Reeder

3

Je voudrais juste:

  • Déplacez le dossier hors de votre arborescence de travail
  • git rm le dossier, validez la modification
  • Ajouter à .gitignore(ou .git/info/excludes), valider la modification
  • Déplacer le dossier en arrière

8
ce n'est pas une bonne solution - et si vous avez un très grand répertoire?
ioleo

probablement besoin d'utilisergit rm -r
theUtherSide

1
@loostro ne le déplace simplement pas vers un autre périphérique de bloc. La plupart des systèmes de fichiers mettront juste à jour l'inode du fichier et ne déplaceront pas littéralement le répertoire entier
648trindade
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.