Каковы различия между.gitignore и.gitkeep?

Каковы различия между .gitignore а также .gitkeep? Это одно и то же с другим именем или они оба выполняют разные функции? Кажется, я не могу найти много документации по .gitkeep,

7 ответов

Решение

.gitkeep не задокументировано, потому что это не особенность Git.

Git не может добавить полностью пустой каталог. Люди, которые хотят отслеживать пустые каталоги в Git, создали соглашение о размещении файлов под названием .gitkeep в этих каталогах. Файл может называться как угодно; Git не придает особого значения этому имени.

Существует конкурирующее соглашение о добавлении .gitignore подать в пустые каталоги, чтобы отслеживать их, но некоторые люди считают, что это сбивает с толку, поскольку цель состоит в том, чтобы сохранить пустые каталоги, а не игнорировать их; .gitignore также используется для отображения файлов, которые Git должен игнорировать при поиске неотслеживаемых файлов.

.gitkeep это просто заполнитель. Файл-пустышка, поэтому git не забудет про каталог, так как git отслеживает только файлы.


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

# .gitignore sample 
###################

# ignore all files in this dir...
*

# ... except for this one.
!.gitignore

Если вы хотите, чтобы в git был виден только один тип файлов, вот пример того, как отфильтровать все, кроме.gitignore и всех .txt файлы:

# .gitignore to keep just .txt files
###################################

# filter everything...
*

# ... except the .gitignore...
!.gitignore

# ... and all text files.
!*.txt

("#" обозначает комментарии.)

.gitignore

текстовый файл, содержащий список файлов в вашем каталоге, которые git будет игнорировать или не добавлять / обновлять в хранилище.

.gitkeep

Поскольку git удаляет или не добавляет пустые каталоги в репозиторий, gitkeep является своего рода хаком (я не думаю, что он официально назван частью git), чтобы хранить пустые каталоги в репозитории.

просто сделай touch /path/to/emptydirectory/.gitkeep чтобы добавить файл и git теперь сможет поддерживать этот каталог в репозитории.

Многие люди предпочитают использовать только .keep поскольку соглашение не имеет ничего общего с git.

Файл используется, чтобы сообщить Git, какие файлы и папки следует игнорировать. Часто эти файлы являются артефактами сборки, временными файлами или другими типами файлов, которые не принадлежат репозиторию. Git проигнорирует любой каталог или файл, который соответствует шаблону в файле.

Пример:

      # Ignore .DS_Store files
.DS_Store

# Ignore build artifacts
build/

# Ignore log files
*.log

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

Пример файла

      # This file is used to keep the directory empty in Git

В заключение. Команда используется, чтобы сообщить Git, какие файлы и папки игнорировать. Чтобы поддерживать каталог Git, который в противном случае был бы пустым, используйте. Они отличаются друг от друга и выполняют разные функции.

Это не ответ на исходный вопрос "В чем разница между.gitignore и.gitkeep?" но размещение здесь, чтобы помочь людям легко отслеживать пустой каталог. Чтобы отслеживать пустой каталог и знать, что .gitkeepне является официальной частью git,

просто добавьте пустой (без содержимого) .gitignore файл в нем.

Так, например, если у вас есть /project/content/posts и иногда posts каталог может быть пустым, тогда создайте пустой файл /project/content/posts/.gitignore без содержимого для отслеживания этого каталога и его будущих файлов в git.

Если вы хотите игнорировать все в подкаталоге, но при этом добавить в Git сам подкаталог (и для этого файл), вам необходимо добавить это в.gitignore:

      build/*
!build/.gitkeep

Это означает игнорировать все, что указано вbuildкаталог, но исключить.gitkeepиз шаблона игнорирования.

Другие вопросы по тегам