Краткий ответ
Пустой репозиторий - это репозиторий git без рабочей копии, поэтому содержимое .git является верхним уровнем для этого каталога.
Используйте не пустой репозиторий для локальной работы и пустой репозиторий в качестве центрального сервера / концентратора, чтобы поделиться своими изменениями с другими людьми. Например, когда вы создаете репозиторий на github.com, он создается как пустой репозиторий.
Итак, в вашем компьютере:
git init
touch README
git add README
git commit -m "initial commit"
на сервере:
cd /srv/git/project
git init --bare
Затем на клиенте вы нажимаете:
git push username@server:/srv/git/project master
Затем вы можете сохранить набор текста, добавив его в качестве удаленного.
Хранилище на стороне сервера будет получать коммиты с помощью push и push, а не редактированием файлов, а затем их фиксацией на сервере, поэтому это пустой репозиторий.
Подробнее
Вы можете отправить в репозиторий, который не является пустым, и git обнаружит, что там есть репозиторий .git, но, поскольку большинству репозиториев "хабов" не нужна рабочая копия, нормально использовать пустой репозиторий для него и рекомендуется, так как нет смысла иметь рабочую копию в репозиториях такого типа.
Тем не менее, если вы отправляете в не пустой репозиторий, вы делаете рабочую копию несовместимой, и git предупредит вас:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
Вы можете пропустить это предупреждение. Но рекомендуемая настройка: использовать не-пустой репозиторий для локальной работы и пустой-репозиторий в качестве концентратора или центрального сервера для передачи и извлечения.
Если вы хотите поделиться работой напрямую с рабочей копией другого разработчика, вы можете извлекать репозитории друг из друга вместо нажатия.