Каковы различия между .gitignore
и .gitkeep
? Это одно и то же с другим именем или они выполняют разные функции?
Кажется, я не могу найти много документации по .gitkeep
.
.gitkeep
не задокументировано, потому что это не особенность Git.
Git не может добавить полностью пустой каталог . Люди, которые хотят отслеживать пустые каталоги в Git, создали соглашение о размещении файлов, называемых .gitkeep
в этих каталогах. Файл может называться как угодно; Git не придает особого значения этому имени.
Существует конкурирующее соглашение о добавлении .gitignore
файла в пустые каталоги для отслеживания их, но некоторые люди считают, что это сбивает с толку, поскольку цель состоит в том, чтобы сохранить пустые каталоги, а не игнорировать их; .gitignore
также используется для отображения файлов, которые Git должен игнорировать при поиске неотслеживаемых файлов.
README
файл в другой пустой подкаталог, содержащий немного информации о том, для чего будет использоваться этот подкаталог? Кажется странным иметь файл с именем,.gitkeep
который на самом деле не является частью git..gitignore
файл с двумя линиями:*
и!.gitignore
более чем достаточно ясности , чтобы передать то , что происходит. Если требуется дополнительная проработка, добавьте комментарий в начало файла, используя#
синтаксис..keep
файлы вместо того,.gitkeep
чтобы сохранять эти пустые папки, поскольку git не единственная система контроля версий, которая не отслеживает пустые папки. Больше подробностей здесь: github.com/rails/rails/issues/2800.gitkeep
это просто заполнитель. Файл-пустышка, поэтому Git не забудет про каталог, так как Git отслеживает только файлы.Если вам нужен пустой каталог и убедитесь, что он остается «чистым» для Git, создайте
.gitignore
в нем следующие строки:Если вы хотите, чтобы в Git был виден только один тип файлов, вот пример того, как отфильтровать все, кроме .gitignore и всех
.txt
файлов:(«#» обозначает комментарии.)
источник
!
перед.gitignore
? Это для того, чтобы избежать точки?!
отрицает следующую часть, как это обычно бывает в программировании.!.gitignore
файл git ignore, либо добавьте файл, затем отредактируйте его, либо принудительно добавьте его с соответствующим содержимым («*», чтобы игнорировать все, или ничего, чтобы просто убедиться, что папка существует), следующий пример .Since the git ignore file is already in the repo it is not necessary to not-ignore it - it is already tracked.
------ Если это не так, и вы не делаете принудительное добавление, вы можете забыть об этом. В тривиальных случаях нет проблем, но если это файл большего размера, вы можете быть расстроены. Использование!.gitignore
мешает вам выстрелить себе в ногу. Я предпочитаю это, сжег себя в прошлом.текстовый файл, содержащий список файлов в вашем каталоге, которые git будет игнорировать или не добавлять / обновлять в хранилище.
Поскольку Git удаляет или не добавляет пустые каталоги в репозиторий, .gitkeep является своего рода хаком (я не думаю, что он официально назван как часть Git), чтобы хранить пустые каталоги в репозитории.
Просто
touch /path/to/emptydirectory/.gitkeep
добавьте файл, и Git теперь сможет поддерживать этот каталог в репозитории.источник
.gitignore
s, сколько хотите, если не хотите каждый раз указывать полный путь к каждой папке..gitkeep
файле, но он не будет отслеживать пустые каталоги, только папку отслеживать, где.gitkeep
файл существует. почему так ?.gitignore
s избавили вас от необходимости указывать полный путь к каждой папке каждый раз? Я думаю, что упускаю что-то очевидное.