web-dev-qa-db-fra.com

Ajouter le dossier spécifique nouvellement créé à .gitignore dans Git

J'avais un répertoire de travail vierge et j'ai apporté un clone d'un dépôt Git hier soir. Mais maintenant, mon serveur local a été créé et contient un dossier de statistiques que je veux ignorer.

Je n'arrive pas à convaincre Git d'ignorer ce dossier lorsque j'exécute un statut 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

J'ai ajouté dans mon .gitignore quelques lignes différentes mais il essaye toujours de les ajouter:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*
78
Lee

Essayez /public_html/stats/*?

Mais depuis les fichiers dans git status signalé comme à valider cela signifie que vous les avez déjà ajoutés manuellement. Dans ce cas, bien sûr, il est un peu trop tard pour l'ignorer. Vous pouvez git rm --cache les (IIRC).

88

Pour cela il y a deux cas

Cas 1: Le fichier est déjà ajouté au git repo.

Cas 2: Fichier nouvellement créé et son statut est toujours affiché comme fichier non suivi lors de l'utilisation

git status

Si vous avez le cas 1:

ÉTAPE 1: Puis lancez

git rm --cached filename 

pour le supprimer du cache git repo

s'il s'agit d'un répertoire, utilisez

git rm -r --cached  directory_name

ÉTAPE 2: Si Le cas 1 est terminé, créez un nouveau fichier nommé .gitignore dans votre dépôt git

ÉTAPE 3: Utilisez ce qui suit pour indiquer à git d'ignorer/supposer que le fichier est inchangé

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

ÉTAPE 4: Maintenant, vérifiez l'état en utilisant l'état ouvert git .gitignore dans votre éditeur nano, vim, geany, etc., ajoutez le chemin du fichier/dossier à ignorer. S'il s'agit d'un dossier, l'utilisateur folder_name/* pour ignorer tous les fichiers.

Si vous ne comprenez toujours pas, lisez le lien article git ignore file .

76
Kshitiz

De "git help ignore" nous apprenons:

Si le modèle se termine par une barre oblique, il est supprimé aux fins de la description suivante, mais il ne trouvera une correspondance avec un répertoire. En d'autres termes, foo/correspondra à un répertoire foo et aux chemins situés en dessous, mais ne correspondra pas à un fichier normal ou à un lien symbolique foo (ceci est cohérent avec la façon dont pathspec fonctionne en général dans git).

Donc ce dont vous avez besoin c'est

public_html/stats /

14
kajaco

C'est /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>
5
August Lilleaas

Je suis incroyablement paresseux. Je viens de faire une recherche dans l'espoir de trouver un raccourci vers ce problème, mais je n'ai pas eu de réponse, alors je l'ai bousillé.

~/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 ajouté stat ignore

Cela ajoutera simplement tous les fichiers ignorés à votre fichier .gitignore et commit. notez que vous voudrez peut-être ajouter des annotations au fichier ultérieurement.

1
michael