Как я могу игнорировать каталоги или папки в Git, используя msysgit в Windows?
.gitkeep
), чтобы указать каталог, который следует сохранить
/
в конце концов , что делает его знать его каталог он должен игнорировать?
Как я могу игнорировать каталоги или папки в Git, используя msysgit в Windows?
.gitkeep
), чтобы указать каталог, который следует сохранить
/
в конце концов , что делает его знать его каталог он должен игнорировать?
Ответы:
Создайте файл с именем .gitignore
в каталоге вашего проекта. Проигнорируйте каталоги, введя имя каталога в файл (с добавленной косой чертой):
dir_to_ignore/
Более подробная информация здесь .
По умолчанию проводник Windows будет отображаться, .gitignore
когда на самом деле имя файла .gitignore.txt
.
Git не будет использовать .gitignore.txt
И вы не можете переименовать файл .gitignore
, потому что Windows Explorer считает, что это файл типа gitignore без имени.
Решение без командной строки:
Вы можете переименовать файл в «.gitignore». , и это создаст ".gitignore"
".gitignore"
и оно сохранит его без автоматического добавления расширения.
".gitignore."
- Это отличный трюк! У меня всегда были проблемы с .htaccess
...
Кажется, что для игнорирования файлов и каталогов существует два основных способа:
.gitignore
.gitignore
файл в корень вашего хранилища, кроме .git
папки (в Windows убедитесь, что вы видите истинное расширение файла, а затем сделайте .gitignore.
(с точкой в конце, чтобы создать пустое расширение файла))~/.gitignore_global
и запуск, git config --global core.excludesfile ~/.gitignore_global
чтобы добавить это в вашу конфигурацию GitПримечание: файлы, отслеженные ранее, можно не отслеживать, запустив git rm --cached filename
Исключение из репозитория - для локальных файлов, которые не требуют совместного использования, вы просто добавляете в файл шаблон файла или каталог .git/info/exclude
. Эти правила не зафиксированы, поэтому другие пользователи их не видят . Более подробная информация здесь .
Чтобы сделать исключения в списке игнорируемых файлов, посмотрите этот вопрос .
git rm --cached <filename>
. Абсолютно критично для репо, которые существовали ДО того, как вы создали.gitignore
У меня были некоторые проблемы , создавая файл в проводнике Windows с микросхемой .
в самом начале.
Обходной путь должен был войти в командную оболочку и создать новый файл, используя «edit».
.
в конце, чтобы исследователь перестал думать, .gitignore
что это расширение. Затем при входе эта конечная точка без расширения просто съедается, и вы .gitignore
.gitignore.
.gitignore
Чтобы указать Git игнорировать определенные файлы или папки, вы должны создать .gitignore
файл.
Но в Windows Explorer вы должны указать имя файла. Вы просто не можете создать файл только с расширением. Хитрость в том, что создайте пустой текстовый файл и перейдите в командную строку и измените имя файла на .gitignore
:
ren "New Text Document.txt" .gitignore
Теперь откройте файл в вашем любимом текстовом редакторе и добавьте имена файлов / папок, которые вы хотите игнорировать. Вы можете также использовать групповые символы , как это: *.txt
.
type nul > .gitignore
создать пустой файл
.gitignore.
когда расширения файлов не скрыты в проводнике Windows
Если вы хотите сохранить папку, а не файлы внутри нее, просто поместите файл «.gitignore» в папку с «*» в качестве содержимого. Этот файл заставит Git игнорировать весь контент из хранилища. Но .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 в целевой каталог, который просто содержит «*».
Наглядный пример,
Пример системы
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Цель
Верхний уровень .gitignore (/root/.gitignore)
Игнорируемый каталог .gitignore (/root/dirB.gitignore)
И это так просто :)
Если ничего не помогает, попробуйте отредактировать файл
/.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" в список файлов и каталогов, чтобы их игнорировать.
Вы можете создать файл .gitignore с содержимым:
*
!.gitignore
Меня устраивает.
В Unix:
touch .gitignore
В Windows:
echo > .gitignore
Эти команды, выполняемые в терминале, создадут .gitignore
файл в текущем местоположении.
Затем просто добавьте в этот .gitignore
файл информацию (например, с помощью Notepad ++), какие файлы или папки следует игнорировать. Сохраните ваши изменения. Это оно :)
Дополнительная информация: .gitignore
У меня были некоторые проблемы с получением Git для загрузки .gitignore
файла в Windows. $GIT_DIR/info/exclude
Файл всегда , кажется, работает , хотя.
Недостатком этого подхода, однако, является то, что файлы в $GIT_DIR
каталоге не включены в регистрацию и, следовательно, не являются общими.
ps
$GIT_DIR
- это обычно скрытая папка с именем.git
Я предполагаю, что проблема в том, что ваше рабочее дерево выглядит так:
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
. Я просто ленился с этим тестовым примером.)
В Windows и Mac, если вы хотите игнорировать папку с именем Flower_Data_Folder в текущем каталоге, вы можете сделать:
echo Flower_Data_Folder >> .gitignore
Если это файл с именем data.txt
:
echo data.txt >> .gitignore
Если это путь типа «Data / passwords.txt»
echo "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
Просто создайте .gitignore
файл в папке вашего проекта. Затем добавьте имя папки в нем, например:
frontend/node_modules