Вопрос

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

Это было полезно?

Решение

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

dir_to_ignore/

Подробная информация здесь.

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

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

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

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

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

You can rename a file to ".гитиньоре". and it will create ".гитиньоре"

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

  1. .гитиньоре

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

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

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

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

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

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

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

но в проводнике 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 есть дополнительная защелка с косыми чертами.Исключая один каталог в .гитиньоре с

dir_to_exclude ( исключить )/

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

/

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

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

**/

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

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

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

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

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

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

Цель

  • игнорируйте содержимое /dirB/

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

  • Вот где находится ваша стандартная информация о gitignore

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

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

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

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

**/build/output/Debug/

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

( p.s.$GIT_DIR обычно является скрытой папкой с именем .git )

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

*
!.gitignore

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

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

/.git/информация/исключить

и добавьте нужные каталоги в конец файла, вот так:

# 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/

Я добавил папки "активы" и "скомпилированные" в список файлов и каталогов, которые следует игнорировать.

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

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

В 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

эхо data.txt >> .gitignore

если это путь, подобный "Data/passwords.txt"

эхо "Data/passwords.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

Крис

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top