2010-07-21 6 views
5

Je suis nouveau à Git et je l'utilise pour sauvegarder un projet iPhone sur lequel je travaille. J'ai ajouté une liste de fichiers que Git devrait ignorer (fichiers xcode) lors de la mise à jour, mais ce fichier .perspectivev3 (qui se trouve dans mon fichier .gitignore) continue de s'afficher lorsque je valide mes modifications. Est-ce que quelqu'un sait pourquoi c'est ou ce que je fais mal?Git ne pas ignorer certains fichiers Xcode dans .gitignore

Merci,

Zach

C'est ce qui est dans mon fichier .gitignore:

# xcode noise 
*.mode1v3 
*.pbxuser 
*.perspective 
*.perspectivev3 
*.pyc 
*~.nib/ 
build/* 

# Textmate - if you build your xcode projects with it 
*.tm_build_errors 

# old skool 
.svn 

# osx noise 
.DS_Store 
profile 
+0

Que voulez-vous dire "aller commettre mes changements"? –

+1

Cela peut être une question stupide, mais avez-vous déjà commis .perspectivev3 précédemment ou l'avez-vous ajouté à l'index avant de mettre à jour votre fichier gitignore? –

Répondre

9

Si elle continué à faire apparaître dans l'état git, il doit avoir été ajouté ou commis avant .

Vous devez

  • git rm --cached ce fichier, pour que la git status à la liste pas plus (il vient d'être ajouté, mais pas encore engagé).
  • git rm ce fichier, si elle a déjà été engagé (voir this question for instance)
+0

Le conseil sur git rm --cached est incorrect. S'il vous plaît voir ma réponse ci-dessous. – jpswain

+0

git rm --cache est utilisé pour supprimer un fichier de votre dépôt local uniquement. C'est exactement ce que je voulais faire –

3

.gitignore applique uniquement pour les fichiers non suivis. Si vous avez ajouté des fichiers qui ne sont pas suivis à cause de .gitignore, ils feront toujours partie du référentiel.

Retirez simplement les fichiers du répertoire que vous ne voulez plus:

git rm *.perspectivev3 
+1

Hey, j'ai ajouté ce fichu fichier avant de l'ajouter au fichier ignoré. J'ai supprimé le fichier, et quand j'ai essayé de valider un changement, le fichier n'était plus là, donc votre conseil a fonctionné. Merci les gars. – agentbanks217

+0

@Zach Banks Je vais maintenant marquer l'une de ces réponses comme acceptée, donc ils obtiennent le crédit et les autres utilisateurs savent que la question est résolue. – Edd

8

Vous pouvez utiliser

$ git rm --cached ./whatever1.txt

après quelque chose est déjà sous contrôle de version.

En fait, si vous avez « whatever1.txt » sous contrôle de version et que vous voulez le supprimer de git, mais laissez votre arbre de travail sans entraves, puis faites ceci:

$ git rm --cached ./whatever1.txt 
$ echo /whatever1.txt >> ${PROJECT_ROOT}/.gitignore 
$ git status # this will now show ./whatever1 as "deleted" (from git, not your working tree, and will show gitignore as modified or created) 
$ git commit -a 

Et voilà.

Utilisez uniquement

$ git rm

lorsque vous souhaitez supprimer le fichier à la fois l'arbre de travail ET le git. CAVEAT: Le scénario probable que vous utiliseriez pour cela consiste à supprimer des fichiers spécifiques à IDE de git. Dans cet exemple, "whatever1" représente le ou les fichiers IDE que vous supprimez. Si vous travaillez sur un projet avec plusieurs personnes et que vous apportez cette modification à un dépôt partagé, alors leurs fichiers "./whatever1" SERONT SUPPRIMÉS lorsqu'ils tireront cette modification. La chose facile à faire d'ici pour les personnes à la réception est:

$ git checkout 1215ef -- ./file-you-want-to-restore ./another-file ./another-etc 

(où 1215ef représente le dernier commit avant la suppression)

Cela a pour effet de restaurer les fichiers qui étaient présents à leur dernier engagement avant l'attraction.Après avoir fait cela, ces fichiers seront en sécurité et n'apparaîtront pas comme non validés car ils seront exclus de gitignore.

Bonne chance!

Questions connexes