2010-02-23 6 views
31

Je travaille sur un projet django avec quelques autres développeurs et nous avons récemment réalisé que tous les fichiers .pwc dans notre application provoquent les commits et le dépôt encombré.Supprimer et ignorer tous les fichiers qui ont une extension d'un dépôt git

Est-il possible de supprimer tous les fichiers .pwc de tous les répertoires enfants de mon référentiel git, puis de les ignorer pour toute future validation?

Répondre

42

beaucoup de façons de les supprimer:

git ls-files | grep '\.pwc$' | xargs git rm 

find . -name *.pwc | xargs git rm 

Note: Si vous ne les avez pas commis, il suffit d'utiliser rm, pas git rm. Pour les ignorer dans le futur, ajoutez simplement * .pwc au .gitignore.

(Si vous n'en avez pas, créez un fichier nommé .gitignore au plus haut niveau de votre dépôt, et ajoutez simplement une seule ligne indiquant "* .pwc")

+0

Je positionniez plus tard un .gitignore mais * .pwc les garder ignorés pour chaque niveau de répertoire de l'application? – BenMills

+0

Le .gitignore est respecté dans tous les sous-répertoires de celui où il est trouvé. C'est pourquoi ils sont généralement placés au plus haut niveau. Notez que vous pouvez les mettre à des niveaux inférieurs, si vous souhaitez ignorer les règles uniquement pour un sous-répertoire donné. – Cascabel

3

La réponse de Jefromi les supprimera pour le moment et le avenir ... vous pouvez également les supprimer dans le passé en utilisant git filter-branch. Bien sûr, cela a d'autres ramifications, comme exiger que tout le monde travaille sur le repo pour re-checkout (et éventuellement rebaser tout travail qu'ils n'ont pas poussé vers le dépôt principal). Cela dépend de la taille des fichiers PWC, vous pouvez le faire s'ils gaspillent beaucoup d'espace disque dans votre repo (puisque chaque fois que vous clonez un repo git, vous obtenez chaque fichier et chaque révision)

15

Vous pouvez également utiliser les éléments suivants:

git rm -r '*.pwc' 

puis faire ces fichiers ignorés par git:

echo '*.pwc' >> .gitignore 

le dernier est dans le cas si vous avez déjà .gitignore fichier, sinon, nous seul signe « > » .

+1

True, mais cela ne regarde pas les sous-répertoires. – jiehanzheng

+0

@jiehanzheng Cela n'est pas correct, l'indicateur '-r' supprimera également les fichiers dans les sous-répertoires. – kaveish

0

Dans de Windows cela a fonctionné pour moi:

git rm -r '*.pwc' -f 

Et pour le garder dans .gitignore

echo '*.pwc' >> .gitignore 
Questions connexes