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

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

17 ответов


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

dir_to_ignore/

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


по умолчанию Windows explorer будет отображать .gitignore когда-то имя файла .gitignore.txt

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

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

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

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

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

  1. .gitignore

    • помещения .gitignore файл в корень вашего РЕПО, кроме .git папку (в Windows убедитесь, что вы см. расширение true file а потом сделать .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 "файл в папке С" * " в качестве содержимого. Этот файл будет игнорировать все содержимое из репозитория. Но!--3--> будет включен в ваше РЕПО.

$ 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 не различает между / и \.

для исключения всех каталогов лучше использовать:

**/

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


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


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

(стр. s. $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"

echo " данные / пароли.формат txt. >> "гитюдного.


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

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

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

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

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

Крис