Как игнорировать каталоги или папки в Git с помощью msysgit в Windows?
Игнорирование каталогов в репозиториях Git в 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
Похоже, что для игнорирования файлов и каталогов существует два основных способа:
.gitignore
-
Поместите файл
.gitignore
в корень репозитория, кроме папки.git
(в Windows убедитесь, что вы видите истинное расширение файла, а затем сделайте.gitignore.
(с точкой в конце, чтобы сделать пустой файл) расширение)) - Создание глобальной конфигурации
~/.gitignore_global
и запускgit config --global core.excludesfile ~/.gitignore_global
для добавления этого в ваш git config
примечание: файлы, отслеженные ранее, можно отследить, запустив
git rm --cached filename
-
Поместите файл
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
Крис