J'ai un référentiel git hébergé sur Github. Après avoir commis de nombreux fichiers, je me rends compte que je dois créer .gitignore
et d' exclure .exe
, les .obj
fichiers.
Cependant, supprimera-t-il automatiquement ces fichiers validés du référentiel? Y a-t-il un moyen de forcer cela?
Réponses:
Non, vous ne pouvez pas forcer la suppression d'un fichier déjà validé dans le référentiel simplement parce qu'il est ajouté au
.gitignore
Vous devez
git rm --cached
supprimer les fichiers dont vous ne voulez pas dans le dépôt. (--cached puisque vous voulez probablement garder la copie locale mais la retirer du repo.) Donc si vous voulez supprimer tous les exe de votre repo(Notez que l'astérisque * est cité à partir du shell - cela permet à git, et non au shell, d'étendre les chemins d'accès des fichiers et des sous-répertoires)
la source
git rm /\*.exe
, tous les exe seront supprimés dans votregit
.git pull
verront leurs fichiers supprimés.Non. Même avec un
.gitignore
fichier existant, vous pouvez mettre en scène des fichiers "ignorés" avec le-f
drapeau (forcer). Si ces fichiers sont déjà validés, ils ne sont pas supprimés automatiquement.la source
Si vous n'avez pas encore poussé les modifications:
la source
J'ai dû supprimer .idea et les dossiers cibles et après avoir lu tous les commentaires, cela a fonctionné pour moi:
puis pousser pour maîtriser
la source
.idea
était mon problème, je suppose que c'était aussi le vôtre:)
Non.
La «meilleure» recette pour ce faire est d'utiliser
git filter-branch
comme écrit ici:La page de manuel de git-filter-branch contient des exemples complets.
Remarque Vous allez réécrire l'historique. Si vous aviez publié des révisions contenant les fichiers ajoutés accidentellement, cela pourrait créer des problèmes pour les utilisateurs de ces branches publiques. Informez-les ou pensez à quel point vous avez besoin de supprimer les fichiers.
Remarque En présence de balises, utilisez toujours l'
--tag-name-filter cat
option pourgit filter-branch
. Cela ne fait jamais de mal et vous évitera le mal de tête lorsque vous réaliserez plus tard que vous en avez besoinla source
--all
pour réécrire toutes les branches (locales) à la foisMême après avoir supprimé le (s) fichier (s) puis validé, vous aurez toujours ces fichiers dans l'historique. Pour les supprimer, pensez à utiliser BFG Repo-Cleaner . C'est une alternative à git-filter-branch.
la source