Игнорирование каталогов в репозиториях Git на Windows - PullRequest
924 голосов
/ 05 декабря 2008

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

Ответы [ 17 ]

1369 голосов
/ 05 декабря 2008

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

dir_to_ignore/

Подробнее здесь .

190 голосов
/ 22 июля 2010

По умолчанию в проводнике Windows будет отображаться .gitignore, если фактически имя файла .gitignore.txt

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

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

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

You can rename a file to <b>".gitignore."</b> and it will create <b>".gitignore"</b>
92 голосов
/ 01 мая 2012

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

  1. .gitignore

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

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

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

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

43 голосов
/ 05 декабря 2008

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

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

41 голосов
/ 25 марта 2010

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

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

ren "New Text Document.txt" .gitignore

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

надеюсь, что ответ на ваш вопрос

19 голосов
/ 29 июня 2012

Если вы хотите сохранить папку, а не файлы внутри нее, просто поместите файл «.gitignore» в папку с «*» в качестве содержимого. Этот файл будет игнорировать весь контент из хранилища. Но .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
15 голосов
/ 13 января 2014

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

dir_to_exclude /

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

/

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

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

** /

Две последовательные звездочки означают содержимое каталога.

14 голосов
/ 10 февраля 2011

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

9 голосов
/ 16 июня 2016

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

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

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

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

Цель

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

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

  • Вот куда отправляется ваша стандартная информация о gitignore

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

  • Этот файл просто читается как '*', и каталог полностью игнорируется, сам и все файлы!

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

8 голосов
/ 17 февраля 2018

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

**/build/output/Debug/
...