2012-03-20 10 views
18

Parece que he regateado mi repositorio git rastreando un archivo, luego ignorándolo y luego eliminándolo. Lo que pasa es que quiero que el archivo esté presente en un repositorio remoto (el sitio en vivo), pero simplemente no quiero rastrearlo.git rastrear, ignorar, borrar, deshacer

Ahora mi rama principal está tratando de eliminar todos los archivos del repositorio, que sé que los eliminará en la rama remota cuando presione cambios ... Solo quiero destrabarlos, pero no puedo hacer eso ya que ' re ya se eliminó en master y git rm -r --cached dice 'no coincidió con ningún archivo'.

¿Cómo puedo eliminar estos archivos eliminados sin eliminarlos del repositorio remoto?

Respuesta

30

Simplemente no desea rastrear un archivo, pero desea mantener el archivo en el repositorio remoto (no desnudo).

Utilice este comando git. Después de hacer esto, git deja de verificar el archivo para posibles modificaciones.

git update-index --assume-unchanged <filename> 

En cualquier momento, usted puede rastrear de nuevo mediante el establecimiento de --no-asuma-unchaged bandera

git update-index --no-assume-unchanged <filename> 

Estos comandos no afectan al repositorio remoto.

Para más información: http://kar-git.blogspot.in/2012/11/how-to-set-git-to-ignore-few-files-like.html

+1

Hei está trabajando. ¿Puedes explicar por qué es diferente de agregar a git ignorar –

+1

@ Ajith: GIT no ignorará un archivo que ya fue rastreado. Mira el enlace proporcionado en la respuesta para obtener información detallada. –

4

git rm se utiliza para eliminar archivos del repositorio.

Para detener el seguimiento de ellos, se puede, después de borrar, añadir al archivo .gitignore en la raíz del repositorio.

+3

no creo que se puede detener el seguimiento de un archivo que ya se realiza un seguimiento por gitignoring ella. ¿Alguien puede confirmar? –

+0

Confirmado. ! min límite de char! – heinrich5991

+0

Pero eliminar el archivo no deja de rastrearlo, ¿verdad? –

0

Incluso si no ha rastreado un archivo con git rm, aún puede obtener una versión anterior de ese archivo, p.

En tu repositorio local: git rm foo git commit -m 'foo eliminado' git push origen principal

En el repositorio remoto:

git pull origin master // foo will be removed 
git checkout abcd1234 -- foo // checkout foo from commit abcd1234 (foo is staged) 
git reset HEAD // unstage foo 
git status 

# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  foo 

A continuación, añadir a .gitignore a untrack