Работал над проектом. В один момент перестал работать .gitignore (лишние файлы в репозиторий запушились). Удалил,создал новый. Как правильно его залить на репозиторий, с другими файлами или без? Потому что я уже попробовал кучу способов и все равно лишние файлы остаются. Сам файл .gitignore взял у знакомого, у него все работает (такая же ОС, вижуалка и тоже плюсы).
3 Answers
если файл уже отслеживается в текущей ветке, то добавление/удаление его имени (или шаблона, под который подпадает его имя) в/из файла .gitignore никак не повлияет на поведение команды git commit -a:
те изменения, которые вы внесли в этот отслеживаемый файл, будут добавлены в индекс и затем в коммит.
чтобы программа git перестала отслеживать изменения в файле, этот файл надо удалить из хранилища:
$ git rm путь/к/файлу
и закоммитить это изменение.
Как правильно его залить на репозиторий, с другими файлами или без?
собственно, файл .gitignore можно даже и не «заливать» в удалённое хранилище. «заливается» он исключительно для удобства других пользователей хранилища: чтобы у всех были идентичные настройки игнорируемых файлов/каталогов.
содержимое же файла .gitignore имеет «непосредственное» действие. пример:
создаём файл:
$ touch fileэтот файл отображается в выводе команды
git statusкак неотслеживаемый:$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) file nothing added to commit but untracked files present (use "git add" to track)если мы добавим его имя в файл
.gitignore:$ echo file >> .gitignoreто команда
git statusуже не будет отображать это файл как неотслеживаемый (т.е., программа git будет игнорировать любые изменения в этом файле):$ git status On branch master 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)
p.s. по поводу «можно даже и не „заливать“»: чтобы в такой ситуации файл .gitignore не «мозолил глаза» в выводе git status как неотслеживаемый (с предложением добавить его в хранилище), можно имя самого этого файла добавить в его содержимое:
$ echo .gitignore >> .gitignore
- 68,117
например у вас есть в директории файлы *.log. Команда git status показывает их. Как только вы добавите в .gitignore строчку *.log, то команда git status не будет показывать их. Проверьте что файл .gitignore у вас в папке где лежит папка .git
- 768
-
Если лишние файлы уже закоммичены ("запушены"), как у автора вопроса, то добавление их в gitignore никак не поможет. – insolor Mar 13 '18 at 18:27
-
-
Ага, удалил gitignore и создал новый. Сами лишние файлы в системе контроля версий так и остались. – insolor Mar 13 '18 at 18:33
-
-
@inzem77 репозиторий остался. Если файлы закомичены, запушены на удаленный репозиторий я разве не могу добавить .gitignor так, чтобы файлы игнорировались на репозитории? – voitje Mar 14 '18 at 06:31
-
проверьте на наличие файла .npmignore в проекте, если он есть - то gitignore не будет работать https://medium.com/@echobrain/11-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D1%85-npm-%D1%82%D1%80%D1%8E%D0%BA%D0%BE%D0%B2-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D0%B2%D0%B0%D1%81-%D1%83%D0%B4%D0%B8%D0%B2%D1%8F%D1%82-d00510587ec
- 1
-
1Это неправда, npm-файлы абсолютно никак не влияют на git-репозиторий. – andreymal Mar 14 '20 at 12:09
-a— это, пмсм, плохая практика. – aleksandr barakin Mar 13 '18 at 20:51