2010-07-21 20 views
5

Soy nuevo en Git y lo estoy usando para hacer una copia de seguridad de un proyecto de iPhone en el que estoy trabajando. He agregado una lista de archivos que Git debe ignorar (archivos xcode) cuando actualizo, pero este archivo .perspectivev3 (que está en mi .gitignore) sigue apareciendo cuando voy a confirmar mis cambios. ¿Alguien sabe por qué es esto o qué estoy haciendo mal?Git no ignora ciertos archivos de Xcode en .gitignore

Gracias,

Zach

Esto es lo que está en mi archivo .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

¿Qué quiere decir "ir a confirmar mis cambios"? Los archivos no ignorados no agregados solo aparecen con el "estado de git" y tal –

+1

Puede ser una pregunta tonta, pero ¿alguna vez ha cometido .perspectivev3 anteriormente o lo ha agregado al índice antes de actualizar su archivo gitignore? –

Respuesta

9

Si siguen apareciendo en el git status, que debe haber sido añadido o cometido antes .

Necesitas

  • git rm --cached ese archivo, para que el git status a no enumera nunca más (se acaba de ser agregada, pero no compromete aún).
  • git rm ese archivo, si se cometió anteriormente (véase this question for instance)
+0

El consejo sobre git rm --cached es incorrecto. Por favor, mira mi respuesta a continuación. – jpswain

+0

git rm --cached se usa para eliminar un archivo de su repositorio local únicamente. Esto es exactamente lo que quería hacer –

3

.gitignore sólo se aplica a los archivos sin seguimiento. Si tienes archivos agregados por git que de otro modo no se han registrado debido a .gitignore, seguirán siendo parte del repositorio.

Simplemente quite los archivos desde el repositorio que no desea más:

git rm *.perspectivev3 
+1

Oye, añadí ese archivo molesto antes de agregarlo al archivo de ignorar. Quité el archivo, y cuando intenté realizar un cambio, el archivo ya no estaba allí, por lo que tu consejo funcionó. Gracias chicos. – agentbanks217

+0

@Zach Banks Ahora marcaría una de estas respuestas como aceptada, de modo que obtienen el crédito y otros usuarios saben que la pregunta está resuelta. – Edd

8

Puede utilizar

$ git rm --cached ./whatever1.txt

después de que algo ya está bajo control de versiones.

De hecho, si usted tiene "whatever1.txt" bajo control de versiones y desea eliminarlo de git, pero deje su árbol de trabajar sin obstáculos, a continuación, sólo hacer esto:

$ 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 

Y eso es todo.

Sólo utilice

$ git rm

cuando se quiere eliminar el archivo de tanto el árbol de trabajo Y el repositorio git.

CAVEAT: El escenario probable que usaría es para eliminar archivos IDE de git. En este ejemplo "whatever1" representa su archivo IDE que está eliminando. Si está trabajando en un proyecto con varias personas y lleva este conjunto de cambios a un repositorio compartido, sus archivos "./whatever1" SERÁN ELIMINADOS cuando retiren este conjunto de cambios. La cosa fácil de hacer desde aquí por la gente en el extremo receptor es:

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

(donde 1215ef representa la última confirmación antes de la eliminación)

Esto tiene el efecto de restaurar los archivos que estaban presentes en su último compromiso antes del tirón.Después de que hayan hecho esto, esos archivos estarán seguros y no se mostrarán como b/c no comprometidos, caerán bajo la exclusión de gitignore.

¡Buena suerte!

Cuestiones relacionadas