Добавить новую созданную папку в .gitignore в Git

У меня был чистый рабочий каталог и привез клоун из репозитория Git прошлой ночью. Но теперь мой локальный сервер создал и содержит папку статистики, которую я хочу игнорировать.

Я не могу заставить Git игнорировать эту папку, когда я запускаю статус 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

Я добавил в свой .gitignore несколько разных строк, но он все равно пытается их добавить:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*

Ответ 1

Попробуйте /public_html/stats/*?

Но так как файлы в git status сообщают, что они будут совершены, это означает, что вы уже добавили их вручную. В этом случае, конечно, слишком поздно игнорировать. Вы можете git rm --cache их (IIRC).

Ответ 2

Для этого есть два случая

Случай 1: файл уже добавлен в git repo.

Случай 2: Файл недавно создан, и его статус все еще отображается как неотслеживаемый файл при использовании

git status

Если у вас есть случай 1:

ШАГ 1: Затем запустите

git rm --cached filename 

чтобы удалить его из кэша git-репо

если это каталог, используйте

git rm -r --cached  directory_name

ШАГ 2. Если Дело 1 завершено, создайте новый файл с именем .gitignore в вашем git-репо

ШАГ 3. Используйте следующее, чтобы сказать git, что он должен игнорировать/предполагать, что файл не изменился

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

ШАГ 4: Теперь, проверьте статус, используя git status, откройте .gitignore в вашем редакторе nano, vim, geany и т.д... любой, добавьте путь к файлу/папке, чтобы игнорировать. Если это папка, то пользователь folder_name/* должен игнорировать все файлы.

Если вы все еще не понимаете, прочитайте ссылку статьи git ignore file.

Ответ 3

От "git help ignore" мы узнаем:

Если шаблон заканчивается косой чертой, удаляется с целью последующее описание, но это только найти совпадение с каталогом. В другими словами, foo/будет соответствовать каталог foo и пути под ним, но не будет соответствовать регулярному файлу или символическая ссылка foo (это согласовано с            как работает pathspec вообще в git).

Поэтому вам нужно

public_html/статистика/

Ответ 4

Это /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

Я невероятно ленив. Я просто сделал поиск, надеясь найти ярлык для этой проблемы, но не получил ответа, поэтому я сбил его с ног.

~/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 добавил stat игнорирует

Это просто добавит все файлы игнорирования в ваш .gitignore и совершит. обратите внимание, что впоследствии вы захотите добавить аннотации к файлу.