В чем разница между ними?gitignore and.gitkeep?

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

3 ответов


.gitkeep не документировано, потому что это не функция Git.

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

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


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


если вы хотите пустой dir и убедитесь, что он остается "чистым" для 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 теперь сможет поддерживать этот каталог в репозитории.