git vs git --bare

Ваш гит репозиторий может существовать в двух вариантах: обычный и --bare. Обычный это ~гит-клиент, а необычный это ~гит-сервер. Ну то есть как бы нет, но --bare существует чтобы его как remote использовали обычные репозитории. И в нём ещё нет файлов.

Вы можете на своём впс создать --bare репозиторий и через ssh в него синхронизироваться не используя никаких сервисов вроде гитхаба. И каждый у кого будет ssh доступ тоже сможет его использовать как remote.

Почему-то когда создаёшь обычный, то он для себя создаёт отдельную директорию /.git, а когда --bare то он указанный путь использует как .git.

> git init  ./git-normal/
    Initialized empty Git repository in /tmp/.dotfiles/git-normal/.git/
> git init --bare ./git-bare/
    Initialized empty Git repository in /tmp/.dotfiles/git-bare/

> ls -lah git-normal/
    .git/
> ls -lah git-bare/
    hooks/
    info/
    objects/
    refs/
    HEAD
    config
    description

Смешная шутка: если вы положите --bare в ./.git/, то оно будет выглядеть как будто бы ./ тут есть гит, и он даже есть, но его нет!

fatal: this operation must be run in a work tree

#linux #howto #man #git

2025.11.09 20:36