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


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

17 824

17 ответов:

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

dir_to_ignore/

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

по умолчанию проводник windows отобразит .gitignore когда на самом деле имя файла .gitignore.txt

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

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

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

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

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

  1. .gitignore

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

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

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

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

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

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

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

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

ren "New Text Document.txt" .gitignore

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

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

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

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

dir_to_exclude/

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

/

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

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

**/

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

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

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

( стр. С. $Использование переменной git_dir обычно скрытую папку .git)

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

*
!.gitignore

это работает для меня и простейших.

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

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

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

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

цель

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

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

  • это где ваш стандартный gitignore информация идет

Игнорируется Каталог .gitignore (/root / dirB.gitignore)

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

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

Я предполагаю, что проблема в том, что ваше рабочее дерево-это как:

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/

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

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

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

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

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

**/build/output/Debug/

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

/.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" в список файлов и каталогов для игнорирования.

В Unix:

touch .gitignore

На Windows:

echo > .gitignore

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

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

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

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

echo Flower_Data_Folder >>.gitignore

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

данные Эхо.формат txt. >> gitignore

если его путь как "данные/пароли.txt"

Эхе "данные/пароли.формат txt. >> "gitignore.

У меня были похожие проблемы, я работаю над цепочкой инструментов windows с общим РЕПО с Linux-ребятами, они с удовольствием создают файлы с одинаковыми [за исключением случая] именами в данной папке.

эффект заключается в том, что я могу клонировать РЕПО и сразу же иметь десятки "измененных" файлов, которые, если бы я зарегистрировался, создали бы хаос.

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

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

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

Крис