2011-03-03 26 views
9

Tengo algunos archivos/carpetas que simplemente no saldrán del área de preparación de Git?Problema con archivos modificados que aparecen en Git pero no se actualizan?

# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# (commit or discard the untracked or modified content in submodules) 
# 
# modified: JavaScript/Stand.ard.iz.er (modified content, untracked content) 
# modified: Site (untracked content) 
# modified: Template Archives/Template (modified content, untracked content) 
# modified: Template Archives/Template_Git (modified content, untracked content) 
# 

He intentado todo para obtener estos archivos 'modificados' pero sin suerte?

He intentado ...

git add . 
git add * 
git add -u 
git add {actual full directory path} 

... pero nada de esto funciona.

¿Alguna idea?

Gracias.

Respuesta

13

Podrían ser submódulos, en cuyo caso su estado se mostraría desde el estado del repositorio principal.

menos, claro está, se utiliza la opción de --ignore-submodules[=<when>]git status:

Ignorar cambios en submódulos en la búsqueda de cambios.
<when> puede ser "none", "untracked", "dirty" o "all", que es el valor predeterminado.

  • El uso de "none" tendrá en cuenta el submódulo modificado cuando sea contiene archivos sin seguimiento o modificados o su HEAD difiere de la confirmación registrada en el SuperProject y se puede utilizar para anular la configuración de la opción de ignorar en git-config o gitmodules.
  • Cuando se usa "untracked", los submódulos no se consideran sucios cuando solo contienen contenido no rastreado (pero aún se examinan en busca de contenido modificado).
  • Usando "dirty" ignora todos los cambios en el árbol de trabajo de los submódulos, solo se muestran los cambios en las confirmaciones almacenadas en el superproyecto (este fue el comportamiento anterior a 1.7.0).
  • El uso de "all" oculta todos los cambios en submódulos (y suprime la salida de los resúmenes submódulo cuando se establece el config option status.submodulesummary).

En cualquier caso, habría que añadir y comprometerse desde el interior de los propios submódulos, antes de poder subir un nivel (a nivel de recompra de los padres), y ver el estado limpio.

+0

Entonces, si siguen apareciendo como modificadas, ¿cómo puedo limpiar su "contenido modificado" de mi repositorio? – Trip

+1

@Trip: ingresando en ese submódulo, ejecute 'git add .' * there *, commit, luego vuelva al repositorio padre: un' git status' mostrará un estado limpio. – VonC

+1

@Vonc Seguí tus instrucciones y ahora un estado de git en el padre muestra 'paquete/supertab (nuevas confirmaciones)'. Si vuelvo, descubrí que 'git status' no muestra el contenido modificado, pero si intento comprometerlo, aún veo' modified: bundle/supertab (contenido modificado) '. ¿Sabes si puedo deshacerme de eso? –

11

Esto podría suceder si ha copiado una carpeta nueva en su proyecto que ya tiene una carpeta .git dentro. Por lo tanto, será como un repositorio secundario en su repositorio principal. La solución es simplemente eliminar esta carpeta .git en su nueva subcarpeta copiada.

+0

Excepto que después de eliminar la carpeta .git, ningún cambio realizado en esta carpeta será rastreado por el repositorio principal. Al menos así es como está en git v1.8.3.1 Estoy usando. –

+1

También debe hacer 'git rm --camp submolule_path # delete reference to submodule HEAD (sin barra inclinada)' para olvidar este submódulo. –

+0

@ZoltanFedor gracias por esto. – Mina

Cuestiones relacionadas