Как игнорировать каталоги или папки в Git с помощью msysgit в Windows?
Создайте файл с именем .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"
".gitignore"
и оно сохраняет его без автоматического добавления расширения.
Кажется, что для игнорирования файлов и каталогов есть два основных способа:
.gitignore
.gitignore
файла в корень вашего репо, кроме .git
(в Windows убедитесь, что см. правдивое расширение файла и затем сделайте .gitignore.
(с точкой в конце сделать пустое расширение файла))~/.gitignore_global
и запуск git config --global core.excludesfile ~/.gitignore_global
, чтобы добавить это в конфигурацию gitnote: файлы, отслеживаемые ранее, могут быть отслежены, запустив git rm --cached filename
Repo exclude. Для локальных файлов, которые не должны использоваться совместно, вы просто добавляете шаблон файла или каталог в файл .git/info/exclude
. Правила тезисов не выполняются, поэтому не видят другие пользователи больше здесь
[обновлено] Чтобы сделать исключения в списке игнорируемых файлов, см. этот вопрос.
git rm --cached <filename>
. Абсолютно критично для репозиториев, которые существовали ДО того, как вы создали .gitignore
У меня возникли проблемы с созданием файла в проводнике Windows с помощью. в начале.
Обходной путь состоял в том, чтобы перейти в командную панель и создать новый файл с помощью "edit"
.
в конце так исследователь перестает думать .gitignore
является расширением. Затем при входе эта конечная точка без расширения просто съедается, и у вас остается .gitignore
TL; DR: попробуйте назвать его .gitignore.
=> вы в конечном итоге с .gitignore
чтобы указать GIT игнорировать определенные файлы или папки, вам нужно создать файл .gitignore
.
но в обозревателе Windows вы должны указать имя файла, вы просто не можете создать файл с просто расширением, трюк в том, что создать пустой текстовый файл и перейти в командную строку и изменить имя файла на .gitignore
ren "New Text Document.txt" .gitignore
теперь откройте файл с помощью вашего любимого текстового редактора и добавьте имена файлов/папок, которые вы хотите игнорировать. вы также можете использовать такие подстановочные знаки *.txt
надеюсь, что он ответит на ваш вопрос.
В Windows есть дополнительный улов с косой чертой. Исключение одного каталога в .gitignore с помощью
dir_to_exclude/
возможно, будет работать, но исключая все каталоги с помощью
/
вызывает проблемы, когда у вас есть имена файлов с пробелами (например, my file.txt
) в вашем каталоге: Git bash экранирует эти пробелы с помощью обратного слэша (например, my\ file.txt
) и Git для Windows не различает между /
и \
.
Чтобы лучше использовать все каталоги:
**/
Две последовательные звездочки означают содержимое каталогов.
Также в вашем каталоге проектов \.git\info
есть файл exclude, который фактически является тем же самым, что и .gitignore
(я думаю). Вы можете добавлять файлы и каталоги, чтобы игнорировать в этом.
Если вы хотите сохранить папку и файлы внутри нее, просто поместите файл ".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
У меня возникли проблемы с получением git для загрузки файла .gitignore в Windows. Файл $GIT_DIR/info/exclude всегда работает. Однако недостатком этого подхода является то, что файлы в каталоге $GIT_DIR не включены в регистрацию и, следовательно, не используются.
(p.s. $GIT_DIR обычно является скрытой папкой с именем .git)
Вы можете создать файл .gitignore с содержимым:
*
!.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/
... , если файлы 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
, я просто был ленив в этом случае).
Чтобы игнорировать весь каталог в git, самый простой способ - включить в целевой каталог .gitignore, который просто содержит "*"
Иллюстративный пример,
Пример системы
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Цель
Верхний уровень .gitignore (/root/.gitignore)
Игнорируемый каталог .gitignore (/root/dirB.gitignore)
и это просто:)
У меня были подобные проблемы, я работаю над цепочкой инструментов 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
Крис