repositorio que eliminar conectar con como carpeta borrar archivos archivo algo git git-rm

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



eliminar repositorio git local (18)

He agregado un archivo llamado "file1.txt" a git repo. Después de que lo dir1 , agregué un par de directorios llamados dir1 y dir2 , y los comprometí a git repo.

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


  1. En primer lugar, eliminar archivos del repositorio local.

    git rm -r nombre-archivo

    o, elimine archivos solo del repositorio local pero del sistema de archivos

    git rm --cached File-Name

  2. En segundo lugar, confirmar cambios en el repositorio local.

    git commit -m "unwanted files or some inline comments"

  3. Finalmente, actualice / inserte cambios locales en el repositorio remoto.

    git push


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

git rm -r foldername


En mi caso, intenté eliminar el archivo en github después de algunas confirmaciones pero guardé en la computadora

git filter-branch -f --index-filter ''git rm --cached --ignore-unmatch file_name_with_path'' HEAD git push --force -u origin master

y luego este archivo fue ignorado


Esta es la única opción que me funcionó.

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.


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


Nota: si desea eliminar un archivo solo de git use a continuación:

git rm --cached file1.txt

Si desea eliminar también desde el disco duro:

git rm file1.txt

Si desea eliminar una carpeta (la carpeta puede contener pocos archivos), debe eliminarla mediante el comando recursivo, como se muestra a continuación:

git rm -r foldername

Si desea eliminar una carpeta dentro de otra carpeta

git rm -r parentFolder/childFolder

Entonces, puedes commit y push como de costumbre. Sin embargo, si desea recuperar la carpeta eliminada, puede seguir esto: es posible recuperar archivos borrados de git.

De doc:

git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>…​

OPCIONES

<file>…​

Files to remove. Fileglobs (e.g. *.c) can be given to remove all matching files. If you want Git to expand file glob characters, you

Puede que tenga que escapar de ellos. Se puede dar un nombre de directorio inicial (por ejemplo, dir para eliminar dir / file1 y dir / file2) para eliminar todos los archivos en el directorio, y recursivamente todos los subdirectorios, pero esto requiere que se dé explícitamente la opción -r. -f --force

Override the up-to-date check.

-n --dry-run

Don’t actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command.

-r

Allow recursive removal when a leading directory name is given.

--

This option can be used to separate command-line options from the list of files, (useful when filenames might be mistaken for

opciones de línea de comandos). --cached

Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.

--ignore-unmatch

Exit with a zero status even if no files matched.

-q --quiet

git rm normally outputs one line (in the form of an rm command) for each file removed. This option suppresses that output.

Lea más en el documento oficial.


Otra forma si desea eliminar el archivo de su carpeta local con el comando rm y luego enviar los cambios al servidor remoto.

rm file1.txt git commit -a -m "Deleting files" git push origin master


Para borrar un archivo específico

nombre de archivo git rm

Para limpiar todos los archivos sin seguimiento de un directorio de forma recursiva en un solo disparo

git clean -fdx


Probé muchas de las opciones sugeridas y ninguna pareció funcionar (no enumeraré los diversos problemas). Lo que terminé haciendo, que funcionó, fue simple e intuitivo (para mí) fue:

  1. mover todo el repositorio local a otro lugar
  2. Clone nuevamente el repositorio desde el master a su disco local.
  3. vuelva a copiar los archivos / carpetas de su copia original en el # 1 de nuevo en el nuevo clon del # 2
  4. asegúrese de que el archivo grande del problema no esté allí o que esté excluido en el archivo .gitignore
  5. haz el habitual git add / git commit / git push

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

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, hay dos opciones:

  1. Si el archivo no tiene cambios por etapas 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 por etapas en el índice:

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



Si su archivo ya está en GitHub, ahora (julio de 2013) puede eliminarlo directamente de la GUI web.

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

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

Y así, se ha ido.

Para obtener ayuda con estas funciones, asegúrese de leer nuestros artículos de ayuda sobre creating , moving , renaming y deleting archivos.

Nota: ya que es un sistema de control de versiones, Git siempre te respalda si necesitas recuperar el archivo más tarde.

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

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


Si tiene la aplicación GitHub para Windows, puede eliminar un archivo en 5 sencillos pasos:

  • Haga clic en Sincronizar.
  • Haga clic en el directorio donde se encuentra el archivo y seleccione su última versión del archivo.
  • Haga clic en las herramientas y seleccione "Abrir un shell aquí".
  • En el shell, escribe: "rm {nombre de archivo}" y pulsa enter.
  • Confirma el cambio y vuelve a sincronizar.

Tengo archivos obj y bin que accidentalmente ingresaron al repositorio por lo que no quiero contaminar mi lista de ''archivos cambiados''

Después de que noté que fueron al control remoto, los ignoré agregando esto a .gitignore

/*/obj /*/bin

El problema es que ya están en el control remoto, y cuando se modifican, aparecen como modificados y contaminan la lista de archivos modificados.

Para dejar de verlos, debe eliminar toda la carpeta del repositorio remoto.

En un símbolo del sistema:

  1. CD a la carpeta repo (es decir, C:/repos/MyRepo )
  2. Quiero borrar SSIS / obj. Parece que solo puede eliminar en el nivel superior, por lo que ahora necesita un CD en SSIS: (es decir, C:/repos/MyRepo/SSIS )
  3. Ahora escribe el encantamiento mágico git rm -r -f obj
    • rm = eliminar
    • -r = eliminar recursivamente
    • -f = significa fuerza, porque realmente lo dices
    • obj es la carpeta
  4. Ahora ejecuta git commit -m "remove obj folder"

Recibí un mensaje alarmante que decía que 13 archivos cambiaron 315222 eliminaciones

Entonces, como no quería tener que buscar la línea CMD, entré en Visual Sstudio e hice una sincronización para aplicarlo al control remoto


Una vez que haya eliminado el archivo del repositorio con git rm , puede usar BFG Repo-Cleaner para eliminar completa y fácilmente el archivo del historial de repositorios.


Utilice git rm :

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

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

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

Y para empujar los cambios al repositorio remoto.

git push origin branch_name


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 sistema de archivos local, use:
git rm --cached file.txt

La situación exacta a continuación es donde uso git para mantener el control de versiones del 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 GRANDES, hice un directorio privado, no enlazado y monté los archivos allí para que él los buscara a través del navegador. Olvidando que hice esto, luego realicé un git add -A desde el directorio base del sitio web. Posteriormente, el git status mostró los nuevos archivos que necesitaban confirmación. Ahora necesitaba eliminarlos del seguimiento de git y del control de versiones ...

El resultado de ejemplo que se muestra a continuación es de lo que me acaba de suceder, donde eliminé involuntariamente el archivo .003 . Afortunadamente, no me importa lo que sucedió con la copia local a .003 , pero algunos de los otros archivos modificados actualmente fueron actualizaciones que acabo de realizar en el sitio web y sería épico haber sido eliminado en el sistema de archivos local. "Sistema de archivos local" = el sitio web en vivo (no es una gran práctica, pero es una 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]$

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


git rm solo eliminará el archivo en esta rama a partir de ahora, pero permanece en la historia y git lo recordará.

La forma correcta de hacerlo es con git filter-branch , como otros han mencionado aquí. Reescribirá cada confirmación en el historial de la rama para eliminar ese archivo.

Pero, incluso después de hacer eso, git puede recordarlo porque puede haber referencias a él en el reflog, controles remotos, etiquetas y demás.

Si quieres borrarlo por completo en un solo paso, te recomiendo que uses git forget-blob

https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/

Es fácil, solo haga git forget-blob file1.txt .

Esto eliminará todas las referencias, hará git filter-branch , y finalmente ejecutará el recolector de basura git gc para deshacerse completamente de este archivo en su repositorio.