2010-07-21 10 views
5

Ich bin neu in Git und ich verwende es, um ein iPhone-Projekt zu sichern, an dem ich arbeite. Ich habe eine Liste von Dateien hinzugefügt, die Git ignorieren sollte (xcode-Dateien), wenn ich update, aber diese .perspectivev3-Datei (die in meiner .gitignore-Datei ist) wird weiterhin angezeigt, wenn ich meine Änderungen beginne. Weiß jemand, warum das ist oder was ich falsch mache?Git ignoriert bestimmte Xcode-Dateien in .gitignore

Danke,

Zach

Dies ist, was in meiner .gitignore Datei ist:

# 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

Was meinst du mit „meine Änderungen zu übernehmen gehen“? Nicht ignoriert nicht hinzugefügten Dateien zeigen nur mit „git status“ und solche –

+1

up Es kann eine dumme Frage, aber haben Sie schon einmal .perspectivev3 zuvor begangen worden sind oder es in den Index aufgenommen, bevor Sie Ihre gitignore Datei aktualisiert? –

Antwort

9

Wenn es in der git status zeigt sich zu halten, muss es vor hinzugefügt oder begangen wurden .

Sie müssen

  • git rm --cached, die um Datei, für die git status nicht zur Liste mehr (es wurde, wird nur hinzugefügt, aber nicht verpflichtet noch) nicht.
  • git rm diese Datei, wenn es zuvor begangen wurde (siehe this question for instance)
+0

Der Hinweis zu git rm --cached ist falsch. Bitte sehen Sie meine Antwort unten. – jpswain

+0

git rm --cached wird verwendet, um eine Datei nur von Ihrem lokalen Repo zu entfernen. Genau das wollte ich tun –

3

.gitignore gilt nur für untracked Dateien. Wenn Sie git-addierte Dateien haben, die sonst aufgrund von .gitignore nicht erkannt wurden, sind sie immer noch Teil des Repositorys.

Entfernen Sie einfach die Dateien aus dem Repository Sie will nicht mehr:

git rm *.perspectivev3 
+1

Hey, ich habe diese lästige Datei hinzugefügt, bevor ich sie der Ignorierdatei hinzugefügt habe. Ich entfernte die Datei, und als ich versuchte, eine Änderung zu bestätigen, war die Datei nicht mehr da, also funktionierte Ihr Rat. Danke Leute. – agentbanks217

+0

@Zach Banken Ich würde jetzt eine dieser Antworten als akzeptiert markieren, damit sie den Kredit bekommen und andere Nutzer wissen, dass die Frage gelöst ist. – Edd

8

Sie

$ git rm --cached ./whatever1.txt

verwenden können, nachdem etwas bereits unter Versionskontrolle ist.

In der Tat, wenn Sie „whatever1.txt“ unter Versionskontrolle und haben Sie es von git zu entfernen, aber Ihren Arbeits Baum ungestört lassen, dann ist dies nur tun:

$ 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 

Und das ist es.

Nur

$ git rm

verwenden, wenn Sie die Datei sowohl aus dem Arbeits Baum UND git Repo entfernen möchten.

CAVEAT: Das wahrscheinlichste Szenario, das Sie verwenden würden, ist zum Entfernen von IDE-spezifischen Dateien von Git. In diesem Beispiel steht "whatever1" für Ihre IDE-Datei (en), die Sie entfernen. Wenn Sie an einem Projekt mit mehreren Personen arbeiten und diesen Änderungssatz an einen freigegebenen Repo weitergeben, werden ihre "./whatever1" -Dateien gelöscht, wenn sie diesen Änderungssatz ziehen. Die einfache Sache von hier für die Menschen auf der Empfängerseite zu tun ist:

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

(wo 1215ef die letzte vor der Löschung begehen darstellt)

Dies hat den Effekt, diese Dateien wiederherzustellen, die vorhanden waren ihre letzte Verpflichtung vor dem Ziehen.Nachdem sie dies getan haben, werden diese Dateien sicher sein und nicht als nicht committed b/c erscheinen, sie werden unter dem Ausschluss von Gitignore fallen.

Viel Glück!

Verwandte Themen