Agregue la carpeta específica recién creada a .gitignore en Git

88

Tenía un directorio de trabajo limpio y anoche traje un clon de un repositorio de Git. Pero ahora mi servidor local creó y contiene una carpeta de estadísticas que quiero ignorar.

Parece que no puedo hacer que Git ignore esta carpeta cuando ejecuto un estado de git.

On branch master
Your branch is ahead of 'origin/master' by 1 commit.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file: app_public/views/pages/privacy.php
    new file: app_public/views/pages/terms.php
    new file: public_html/stats/ctry_usage_200908.png
    new file: public_html/stats/daily_usage_200908.png
    new file: public_html/stats/dns_cache.db
    new file: public_html/stats/hourly_usage_200908.png
    new file: public_html/stats/index.html
    new file: public_html/stats/usage.png
    new file: public_html/stats/usage_200908.html
    new file: public_html/stats/webalizer.current
    new file: public_html/stats/webalizer.hist

Changed but not updated:
    modified: .gitignore

Agregué en mi .gitignore algunas líneas diferentes pero todavía intento agregarlas:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*
Sotavento
fuente

Respuestas:

98

Intenta /public_html/stats/*?

Pero dado que los archivos se git statusinformaron como confirmados, eso significa que ya los ha agregado manualmente. En cuyo caso, por supuesto, es demasiado tarde para ignorarlo. Puedes git rm --cacheellos (IIRC).

Michael Krelin - hacker
fuente
16
¡Espere! Tiene "archivos para confirmar", eso significa que ya los ha git addeditado.
Michael Krelin - hacker
93

Para esto hay dos casos

Caso 1: archivo ya agregado al repositorio de git.

Caso 2: Archivo recién creado y su estado aún se muestra como archivo sin seguimiento cuando se usa

git status

Si tiene el caso 1:

PASO 1: Luego ejecuta

git rm --cached filename 

para eliminarlo de la caché de repositorios de git

si es un directorio entonces usa

git rm -r --cached  directory_name

PASO 2: Si el Caso 1 terminó, cree un nuevo archivo con el nombre .gitignoreen su repositorio git

PASO 3: Use lo siguiente para decirle a git que ignore / asuma que el archivo no ha cambiado

git update-index --assume-unchanged path/to/file.txt

PASO 4: Ahora, verifique el estado usando git status open .gitignoreen su editor nano, vim, geany, etc. cualquiera, agregue la ruta del archivo / carpeta para ignorar. Si es una carpeta, el usuario folder_name/*debe ignorar todos los archivos.

Si aún no lo entiende, lea el artículo git ignore el enlace del archivo .

Kshitiz
fuente
3
Recibo fatal: Unable to mark file .idea/jsLibraryMappings.xmlcuando lo hagoupdate-index
OlehZiniak
@OlehZiniak ha descubierto qué se debe hacer cuando se produce un fatal: Unable to mark fileerror. Por favor ayuda.
chanchal pardeshi
permiso y propiedad del archivo que no puede marcar. en que paso muestra error?
Kshitiz
16

De "git help ignore" aprendemos:

Si el patrón termina con una barra, se elimina con el propósito de la siguiente descripción, pero solo encontrará una coincidencia con un directorio. En otras palabras, foo / coincidirá con un directorio foo y rutas debajo de él, pero no coincidirá con un archivo normal o un enlace simbólico foo (esto es consistente con la forma en que pathpec funciona en general en git).

Por tanto lo que necesitas es

public_html / stats /

kajaco
fuente
1
Eso solo significa que "public_html / stats /" solo coincidirá con un directorio, pero no con un archivo, pero "public_html / stats" coincidirá con el directorio y un archivo de ese nombre, por lo que ese no es el problema. Aunque sigue siendo una buena idea.
jmanning2k
1
La página de manual dice foo / coincidirá con un directorio foo y las rutas debajo de él. OP quiere ignorar la carpeta y su contenido. Aparte de otros problemas con git add, así es como se hace.
kajaco
6

Es /public_html/stats/*.

$ ~/myrepo> ls public_html/stats/
bar baz foo
$ ~/myrepo> cat .gitignore 
public_html/stats/*
$ ~/myrepo> git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   .gitignore
nothing added to commit but untracked files present (use "git add" to track)
$ ~/myrepo>
Agosto Lilleaas
fuente
2

Soy increíblemente vago. Acabo de hacer una búsqueda con la esperanza de encontrar un atajo a este problema, pero no obtuve una respuesta, así que lo dejé.

~ / bin / IGNORE_ALL

#!/bin/bash
# Usage: IGNORE_ALL <commit message>                                                                                                                             
git status --porcelain | grep '^??' | cut -f2 -d' ' >> .gitignore              
git commit -m "$*" .gitignore 

EG: IGNORE_ALL ignora las estadísticas agregadas

Esto solo agregará todos los archivos ignorados a su .gitignore y los confirmará. tenga en cuenta que es posible que desee agregar anotaciones al archivo posteriormente.

Miguel
fuente