Игнорирование каталогов в репозиториях Git в Windows

Как я могу игнорировать каталоги или папки в Git с помощью msysgit в Windows?

Вы хотите, чтобы папка кеша была полностью исключена из репозитория или только ее содержимое?

Gareth 29.06.2012 14:09

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

Mark Longair 29.06.2012 14:19

@Gareth: поскольку пустые папки не отслеживаются с помощью git, если содержимое игнорируется, папка также будет, не так ли?

eckes 29.06.2012 14:34

Собственно, отсюда и файлы index.html. таким образом папки не будут пустыми.

Hailwood 29.06.2012 14:53

Я только упомянул, что, поскольку некоторые люди используют скрытые файлы (обычно .gitkeep), чтобы указать каталог, который следует сохранить.

Gareth 29.06.2012 22:17

является ли / в конце тем, что заставляет его знать, что это каталог, который он должен игнорировать?

Charlie Parker 19.01.2017 00:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1 236
6
1 213 051
19
Перейти к ответу Данный вопрос помечен как решенный

Ответы 19

Ответ принят как подходящий

Создайте файл с именем .gitignore в каталоге вашего проекта. Игнорировать каталоги, введя имя каталога в файл (с добавленной косой чертой):

dir_to_ignore/

Дополнительная информация - здесь.

В командной строке Windows вы можете использовать «edit .gitignore» или «notepad .gitignore», чтобы создать правильный файл.

Joey Green 09.05.2011 20:08

Или вы также можете использовать 'touch .gitignore' из командной строки Windows git bash, и это создаст правильно названный файл, который затем, в свою очередь, можно будет редактировать с помощью блокнота или тому подобного ...

SGB 23.11.2011 01:48

Или просто создайте файл с именем .gitignore. с проводником и отредактируйте его с помощью блокнота (конечная точка будет удалена). Таким образом, вам не нужно использовать командную строку.

P. Galbraith 30.03.2012 04:01

@ P.Galbraith Для меня (Windows XP) я получаю сообщение об ошибке при попытке создать файл с именем .gitignore.: You must type a file name. в проводнике.

deed02392 05.08.2013 18:00

Или вы можете vim .gitignore с терминала. :)

MollyCat 20.08.2013 03:33

Или, что на удивление не было упомянуто, хотя это самый быстрый способ, просто введите в консоли «echo folder_to_ignore >> .gitignore».

Godsmith 09.02.2014 10:49

@Godsmith ваше решение сработало! : D спасибо, я пробовал добавить свою папку bower_components/ прямо в gitignore, но она все равно появилась

Leon Gaban 05.11.2014 21:11

даже если я добавлю папку в файл .gitignore, git пытается проиндексировать папку. как я могу это пропустить? всякий раз, когда я запускаю команду git add index, это занимает так много времени.

verystrongjoe 03.03.2015 05:40

В Windows 7 просто создайте новый текстовый документ с именем .gitignore. и он станет .gitignore

Mr Rubix 21.01.2016 00:23

Это рекурсивно игнорирует все подпапки с именем dir_to_ignore, например, root_dir/dir_to_ignore и root_dir/some_dir/dir_to_ignore будут проигнорированы.

Oleksii Nezhyborets 16.08.2016 16:42

Дважды проверьте кодировку файла, которая получается из "echo folder_to_ignore >> .gitignore" на компьютере с Windows. Убедитесь, что git не рассматривает его как двоичный файл.

Laura 07.09.2016 18:49

является ли / в конце тем, что заставляет его знать, что это каталог, который он должен игнорировать?

Charlie Parker 19.01.2017 00:59

Не забудьте запустить git reset folder /

Tatiana Saturno 20.05.2017 22:42

вы также можете использовать эту команду в cmd: copy con .gitignore, затем введите свой dir_to_ignore, затем нажмите ctrl + z, а затем Enter! (научился этому, когда был ребенком, а мой отец изучал DOS)

Paiman Roointan 18.12.2019 14:24

Иногда мне приходится запускать git rm --cached -r ., чтобы gitignore работал правильно ....

mr_azad 11.07.2020 13:24

У меня были проблемы с созданием файла в Windows Explorer с . в начале.

Обходной путь заключался в том, чтобы войти в командную оболочку и создать новый файл с помощью «редактирования».

или просто добавьте дополнительный . в конце, чтобы проводник перестал думать, что .gitignore - это расширение. Затем при входе эта конечная точка без расширения просто съедается, и у вас остается .gitignore TL; DR: попробуйте назвать ее .gitignore. => вы получите .gitignore

leerssej 25.02.2018 23:13

Чтобы указать Git игнорировать определенные файлы или папки, вы должны создать файл .gitignore.

Но в Windows Explorer вы должны указать имя файла. Вы просто не можете создать файл только с расширением. Хитрость в том, что создайте пустой текстовый файл, перейдите в командную строку и измените имя файла на .gitignore:

ren "New Text Document.txt" .gitignore

Теперь откройте файл с помощью вашего любимого текстового редактора и добавьте имена файлов / папок, которые вы хотите игнорировать. Вы также можете использовать такие подстановочные знаки: *.txt.

Или просто: echo dir_to_ignore /> .gitignore

Oliver 06.06.2010 21:16

Или type nul > .gitignore для создания пустого файла

Castro Roy 08.04.2015 22:04

Или просто назовите файл .gitignore., когда расширения файлов не скрыты в проводнике Windows.

Vairis 06.05.2015 14:43

По умолчанию Windows Explorer отображает .gitignore, хотя на самом деле имя файла - .gitignore.txt.

Git не будет использовать .gitignore.txt

И вы не можете переименовать файл в .gitignore, потому что Windows Explorer считает, что это файл типа gitignore без имени.

Решение без командной строки:

You can rename a file to ".gitignore.", and it will create ".gitignore"

Это работает? Я всегда просто просил людей открыть блокнот и в диалоговом окне «Сохранить как» ввести имя файла в двойных кавычках, например, ".gitignore", и он сохраняет его без автоматического добавления расширения.

Arrowmaster 10.02.2011 20:44

Аккуратный. Включение конечной точки действительно работает. Проводник удаляет последнюю точку, в результате чего получается файл с именем ".gitignore". Я думаю, что метод кавычек чище и с меньшей вероятностью преподнесет сюрпризы.

Triynko 09.09.2011 02:29

Или в диалоговом окне «Сохранить как» измените тип файла на «Все файлы (.)» - тогда Windows не будет добавлять никаких расширений.

OsakaWebbie 26.03.2014 06:20

или в git bash просто введите "touch .gitignore" в свою папку

Rayjax 27.05.2014 16:25
".gitignore." - Это отличный трюк! У меня тоже всегда были проблемы с .htaccess ...
Obmerk Kronen 19.04.2016 10:07

@Rayjax Я думаю, что bash не попадает в группу "некомандные решения" :)

Vairis 16.04.2020 18:36

действительно- все еще полезно некоторым видимо :)

Rayjax 18.04.2020 11:37

Также в вашем каталоге проектов \.git\info есть файл исключения, который фактически то же самое, что и .gitignore (я думаю). Вы можете добавить файлы и каталоги, которые будут игнорироваться.

Мне нравится этот подход, я просто не могу найти там путь, я хочу игнорировать папку в основном репо, как?

Shimmy Weitzhandler 18.05.2017 09:50

Но разве вы не должны оставлять файлы только в .git (управлять содержимым официальными средствами)?

Peter Mortensen 14.11.2019 16:55

У меня были проблемы с тем, чтобы Git забрал файл .gitignore в Windows. Хотя файл $GIT_DIR/info/exclude всегда работает.

Обратной стороной этого подхода, однако, является то, что файлы в каталоге $GIT_DIR не включаются в регистрацию и, следовательно, не используются совместно.

p.s. $GIT_DIR is usually the hidden folder named .git

Да, git в Windows действительно привередлив к .gitignore - локальный файл исключения делает то, что мне нужно. Спасибо!

andersop 26.07.2012 04:39

Похоже, что для игнорирования файлов и каталогов есть два основных способа:

  1. .gitignore

    • Поместите файл .gitignore в корень вашего репозитория помимо папки .git (в Windows убедитесь, что вы увидеть истинное расширение файла, а затем сделайте .gitignore. (с точкой в ​​конце, чтобы сделать пустое расширение файла))
    • Создание глобальной конфигурации ~/.gitignore_global и запуск git config --global core.excludesfile ~/.gitignore_global, чтобы добавить ее в конфигурацию Git.

    Примечание: файлы, отслеживаемые ранее, можно не отслеживать, запустив git rm --cached filename.

  2. Репозиторий исключить - для локальных файлов, которые не нужно разделять, вы просто добавляете шаблон файла или каталог в файл .git/info/exclude. Эти правила не выполняются, поэтому они не видят другие пользователи. Дополнительная информация - здесь.

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

хорошая работа, указывая на git rm --cached <filename>. Абсолютно критично для репозиториев, существовавших ДО того, как вы создали .gitignore.

MaurerPower 03.06.2012 05:06

git rm --cached <filename> исправил проблему с .gitignore :)

MeatFlavourDev 18.03.2013 03:27

Да, git rm --cached filename абсолютно необходим. Это сводило меня с ума, так как git все еще размещал файлы, которые, как я четко заявил, игнорируются (созданный gitignore после первоначального коммита). Большое спасибо!

Potaito 08.10.2013 20:55

Решил мою проблему. Git отслеживал папку поставщика в моем репозитории laravel, хотя я добавил папку поставщика в gitignore. Большое спасибо.

Jayant 31.08.2015 08:50

моя папка сборок отслеживалась. Он должен был быть добавлен в .gitignore после сборки. В любом случае, команда для отмены отслеживания папки следующая: git rm --cached builds -r (где builds - это папка, которую вы хотите отследить, а -r рекурсивно означает, что все файлы и подпапки не будут отслеживаться)

D. Kermott 09.11.2020 18:39

Я предполагаю, что проблема в том, что ваше рабочее дерево похоже:

a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore

... с описанным вами .gitignore. Это даст вам вывод git status, например:

$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#    .gitignore
#    a-cache/
#    b-cache/

... если файлы index.html еще не добавлены в репозиторий. (Git видит, что в каталогах кеша есть не проигнорированные файлы, но сообщает только о каталогах.) Чтобы исправить это, убедитесь, что вы добавили и зафиксировали файлы index.html:

git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"

... и ваш git status будет выглядеть так:

$ 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)

(Очевидно, вы тоже хотите зафиксировать .gitignore. Я просто поленился с этим тестовым примером.)

Вероятно, вы захотите зафиксировать .gitignore делать, особенно потому, что вы, вероятно, захотите отслеживать его изменения, и ваша команда тоже (если вы работаете с ней). См. stackoverflow.com/a/767213/123033

Dave Everitt 15.01.2013 18:24

@Dave Everitt: Именно поэтому я сказал: «Очевидно, вы тоже хотите зафиксировать .gitignore».

Mark Longair 15.01.2013 19:16

Если вы хотите сохранить папку, а не файлы внутри нее, просто поместите файл «.gitignore» в папку с «*» в качестве содержимого. Этот файл заставит Git игнорировать весь контент из репозитория. Но .gitignore будет включен в ваш репозиторий.

$ git add path/to/folder/.gitignore

Если вы добавите пустую папку, вы получите это сообщение (.gitignore - это скрытый файл)

The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added

Итак, используйте "-f", чтобы принудительно добавить:

$ git add path/to/folder/.gitignore -f

У меня были похожие проблемы. Я работаю над цепочкой инструментов Windows с общим репозиторием с парнями из Linux, и они с радостью создают файлы с одинаковыми (за исключением регистра) именами в заданной папке.

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

У меня Windows настроена на чувствительность к регистру, а Git не игнорирует регистр, но он все равно не работает (очевидно, в вызовах Win32 API).

Если я gitignore файлы, я должен помнить, что не следует отслеживать файл .gitignore.

Но я нашел здесь хороший ответ:

http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

Ссылка не работает (сначала выполняется перенаправление на версию https): «Ошибка безопасного подключения. Произошла ошибка при подключении к archive.robwilkerson.org. PR_END_OF_FILE_ERROR»

Peter Mortensen 14.11.2019 17:23

В Windows есть дополнительная загвоздка с косой чертой. Исключение одного каталога в .gitignore с помощью

dir_to_exclude/

возможно будет работать, но исключая все каталоги с

/

вызывает проблемы, если в вашем каталоге есть имена файлов с пробелами (например, my file.txt): Git Bash экранирует эти пробелы обратной косой чертой (например, my\ file.txt), а Git для Windows не различает / и \.

Чтобы исключить все каталоги, лучше использовать:

**/

Две звездочки, идущие подряд, означают содержимое каталога.

Вы можете создать файл ".gitignore" с содержимым:

*
!.gitignore

Меня устраивает.

Это лучший ответ, он также дает дополнительные преимущества при развертывании и обслуживании проекта.

Nitin... 20.06.2016 12:24

Кто такой "простые"?

Peter Mortensen 14.11.2019 17:28

@PeterMortensen, «Жизнь действительно проста, но мы настаиваем на ее усложнении» - Конфуций

calraiden 28.10.2020 20:46

Мне также нужно было добавить /.gitgnore, чтобы также игнорировать сам файл .gitignore

Diego Favero 21.12.2020 05:42

Чтобы игнорировать весь каталог в Git, самый простой способ - включить файл .gitignore в целевой каталог, который просто содержит "*".

Наглядный пример,

Пример системы

/root/
    .gitignore
    /dirA/
        someFile1.txt
        someFile2.txt
    /dirB/
        .gitignore
        someFile3.txt
        someFile4.txt

Цель

  • игнорировать содержимое / dirB /

Верхний уровень (/root/.gitignore)

  • Здесь находится ваша стандартная информация о gitignore (например, «~ Untitled.docx», некоторые частные каталоги и т. д.). «DirB /», безусловно, можно разместить здесь, если необходимо

Игнорируемый каталог (/root/dirB/.gitignore)

  • Git следит за gitignore на каждом этапе файловой системы, поэтому каждый раз, когда вы игнорируете спецификации для применения, вставляйте его, создавая новый gitignore для этого каталога.

  • dirB / .gitignore тогда просто читается как «*», и все содержимое полностью игнорируется, само и все файлы!

И это так просто :)

Что такое стандартная информация gitignore? Вы можете привести пример? Что вы имеете в виду, когда говорите «файл просто читается как *», это не имеет никакого смысла? Не думаю, что я что-то понял из этого ответа и не нашел его простым.

skdhfgeq2134 25.06.2020 07:38

Файл состоит из одного символа, одного символа «*». Я рассмотрю и расскажу о деталях чуть позже.

J-Dizzle 25.06.2020 09:37

Я считаю, что это чище, потому что он не загромождает ваш основной файл .gitignore.

Farseen 29.12.2020 09:34

@ skdhfgeq2134 на английском языке, когда вы говорите «X читается как Y», это означает «Y написано на / в X».

Frank Z. 31.01.2021 13:56

Пожалуйста, уточните - я не совсем понимаю, о чем вы говорите! Поделитесь подробностями и я обновлю

J-Dizzle 31.01.2021 22:04

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

**/build/output/Debug/

Где мне добавить это выражение?

skdhfgeq2134 25.06.2020 07:44

Когда все остальное терпит неудачу попробуйте отредактировать файл

/.git/info/exclude

и добавив нужные каталоги в конец файла, например:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/

Я добавил папки «assets» и «compiled» в список файлов и каталогов, которые нужно игнорировать.

Я использую Atom в Windows 10. Работает! Спасибо приятель!

Putu De 13.11.2018 09:35

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

Xedret 14.11.2018 22:59

В Unix:

touch .gitignore

В Windows:

echo > .gitignore

Эти команды, выполняемые в терминале, создадут файл .gitignore в текущем месте.

Затем просто добавьте информацию в этот файл .gitignore (например, используя Notepad ++), какие файлы или папки следует игнорировать. Сохраните изменения. Это оно :)

Дополнительная информация: .gitignore

Есть ли особый способ добавления файлов? Как будто я просто напишу файлы, разделенные пробелом, и он будет искать эти файлы во всей корневой папке. Следует ли мне добавить путь к файлам в этот файл gitignore? Где мне создать этот файл .gitignore в корневом каталоге?

skdhfgeq2134 25.06.2020 07:46

В Windows и Mac, если вы хотите игнорировать папку с именем Flower_Data_Folder в текущем каталоге, вы можете сделать:

echo Flower_Data_Folder >> .gitignore

Если это файл с именем data.txt:

echo data.txt >> .gitignore

Если это путь типа "Data / passwords.txt"

echo "Data/passwords.txt" >> .gitignore. 

Просто создайте файл .gitignore в папке вашего проекта. Затем добавьте в него имя папки, например:

frontend/node_modules

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

Создание файла .gitignore в каталоге само по себе ничего не делает. Вы должны открыть .gitignore как текстовый файл и записать файлы / каталоги, которые вы хотите игнорировать, каждый в отдельной строке.

поэтому перейдите в каталог репозитория Git

touch .gitignore
nano .gitignore

а затем напишите имена файлов и / или каталогов, которые вы хотите игнорировать, и их расширения, если это необходимо.

Кроме того, .gitignore - это скрытый файл в некоторых ОС (например, Mac), поэтому для его просмотра вам понадобится ls -a, а не только ls.

Другие вопросы по теме