Игнорирование каталогов в репозиториях 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
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
Принципы ООП в JavaScript
Принципы ООП в JavaScript
Парадигма объектно-ориентированного программирования имеет 4 основных принципа,
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Пройдите собеседование по Angular: Общие вопросы и ответы экспертов
Можете ли вы объяснить разницу между ngOnInit и конструктором в Angular?
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
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.

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