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

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

Ответ 1

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

dir_to_ignore/

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

Ответ 2

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

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

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

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

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

Ответ 3

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

  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. Эти правила не зафиксированы, поэтому не видны другим пользователям подробнее здесь

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

Ответ 4

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

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

Ответ 5

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

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

ren "New Text Document.txt" .gitignore

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

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

Ответ 6

Если вы хотите сохранить папку, а не файлы внутри нее, просто поместите файл ".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

Ответ 7

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

dir_to_exclude/

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

/

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

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

**/

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

Ответ 8

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

Ответ 9

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

**/build/output/Debug/

Ответ 10

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

Иллюстративный пример,

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

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

Цель

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

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

  • Здесь размещена ваша стандартная информация о gitignore

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

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

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

Ответ 11

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

/.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" в список файлов и каталогов, чтобы их игнорировать.

Ответ 12

У меня были некоторые проблемы с получением git для загрузки файла .gitignore в Windows. Файл $GIT_DIR/info/exclude всегда работает. Недостатком этого подхода, однако, является то, что файлы в каталоге $GIT_DIR не включены в регистрацию и, следовательно, не являются общими.

постскриптум $GIT_DIR обычно представляет собой скрытую папку с именем .git

Ответ 13

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

*
!.gitignore

Это работает для меня и просто.

Ответ 14

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

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, я просто был ленив в этом случае).

Ответ 15

В Unix:

touch .gitignore

В Windows:

echo > .gitignore

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

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

Больше информации: https://www.atlassian.com/git/tutorials/saving-changes/gitignore

Ответ 16

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

echo Flower_Data_Folder >>.gitignore

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

echo data.txt >>.gitignore

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

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

Ответ 17

У меня были подобные проблемы, я работаю над цепочкой инструментов Windows с общим репо с ребятами из linux, они быстро создают файлы с тем же именем [except for case] в данной папке.

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

У меня есть окна, чувствительные к регистру, и git, чтобы не игнорировать регистр, но он все равно не работает (по-видимому, в вызовах win32 api).

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

Но я нашел хороший ответ здесь http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html

Крис