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/*
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).
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 .
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 /
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>
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.