Pregunta ¿Cómo puedo eliminar un archivo de git repo?


He agregado un archivo llamado "file1.txt" para git repo. Después de eso me comprometí, agregué un par de directorios llamados dir1 y dir2, y los comprometió a git repo.

Ahora el repo actual tiene "file1.txt", dir1 y dir2.
Cómo puedo eliminar "file1.txt" sin afectar a otros como dir1 y dir2?


1311
2018-01-12 07:48


origen


Respuestas:


Utilizar git rm:

git rm file1.txt
git commit -m "remove file1.txt"

Pero si desea eliminar el archivo solo del repositorio de Git y no eliminarlo del sistema de archivos, use:

git rm --cached file1.txt
git commit -m "remove file1.txt"

Y para impulsar cambios al repositorio remoto

git push origin branch_name  

2213
2018-01-12 07:52



git rm file.txt elimina el archivo del repositorio, pero también lo elimina del sistema de archivos local.

Para eliminar el archivo del repositorio y no eliminarlo del uso del sistema de archivos local:
git rm --cached file.txt 

La situación exacta a continuación es donde uso git para mantener el control de versiones para el sitio web de mi empresa, pero el directorio "mickey" era una carpeta tmp para compartir contenido privado con un desarrollador de CAD. Cuando necesitaba archivos ENORMES, construí un directorio privado, no vinculado y descargué los archivos para que él los buscara en el navegador. Olvidando que hice esto, más tarde realicé un git add -A desde el directorio base del sitio web. Después, git status mostró los nuevos archivos que necesitan confirmación. Ahora necesitaba eliminarlos del seguimiento y control de versiones de git ...

La salida de muestra a continuación es de lo que me acaba de pasar, donde borré involuntariamente el .003 archivo. Afortunadamente, no me importa qué pasó con la copia local a .003, pero algunos de los otros archivos actualmente cambiados eran actualizaciones que acabo de hacer en el sitio web y sería épico que se hubieran eliminado en el sistema de archivos local. "Sistema de archivos local" = el sitio web en vivo (no es una gran práctica, pero es la realidad).

[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$ 
[~/www]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   shop/mickey/mtt_flange_SCN.7z.001
#   modified:   shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001  shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ 
[~/www]$ 
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001  shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ 
[~/www]$ 
[~/www]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   deleted:    shop/mickey/mtt_flange_SCN.7z.002
#   deleted:    shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
#   modified:   shop/mickey/mtt_flange_SCN.7z.001
[~/www]$

Actualizar: Esta respuesta está recibiendo algo de tráfico, así que pensé en mencionar mi otra respuesta de Git comparte un par de excelentes recursos: Esta página tiene un gráfico que ayuda a desmitificar Git para mí. los El libro "Pro Git" está en línea y me ayuda mucho


547
2018-05-25 20:26



Si su archivo ya está en GitHub, ahora (julio de 2013) puede ¡elimínelo directamente de la GUI web!

Simplemente vea cualquier archivo en su repositorio, haga clic en el ícono de la papelera en la parte superior y comprometa la eliminación como cualquier otra edición basada en la web.

delete button

(la confirmación reflejará la eliminación de ese archivo):

commit a deletion

Y solo así, se fue.

Para obtener ayuda con estas funciones, asegúrese de leer nuestros artículos de ayuda sobre creando, emocionante, renombrandoy eliminando archivos.

Nota: dado que es un sistema de control de versiones, Git siempre tiene su espalda si necesita recuperar el archivo más tarde.

La última oración significa que el archivo eliminado aún forma parte del historial, y puede restaurarlo con la suficiente facilidad (pero aún no a través de la interfaz web de GitHub):

Ver "Restaurar un archivo eliminado en un repositorio de Git".


56
2017-07-04 20:53



Esta es la única opción que funcionó para mí.

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.sql'

Nota: Reemplace * .sql con su nombre de archivo o tipo de archivo. Tenga mucho cuidado porque esto pasará por cada confirmación y extraerá este tipo de archivo.


39
2018-02-27 19:29



Más generalmente, git help ayudará con al menos preguntas simples como esta:

zhasper@berens:/media/Kindle/documents$ git help
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]

The most commonly used git commands are:
   add        Add file contents to the index
   :
   rm         Remove files from the working tree and from the index

23
2018-01-12 08:21



Además, si se trata de eliminar una carpeta y sus carpetas o archivos secundarios posteriores, use:

git rm -r foldername

23
2018-04-17 15:41



Si desea eliminar el archivo del repositorio, déjelo en el sistema de archivos (no será rastreado):

bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"

Si desea eliminar el archivo del repositorio y del sistema de archivos, existen dos opciones:

  1. Si el archivo no tiene cambios organizados en el índice:

    bykov@gitserver:~/temp> git rm file1.txt
    bykov@gitserver:~/temp> git commit -m "remove file1.txt"
    
  2. Si el archivo tiene cambios organizados en el índice:

    bykov@gitserver:~/temp> git rm -f file1.txt
    bykov@gitserver:~/temp> git commit -m "remove file1.txt"
    

10
2018-03-20 12:13