Jawaban singkat
Repositori kosong adalah repositori git tanpa copy yang berfungsi, oleh karena itu konten .git adalah level teratas untuk direktori itu.
Gunakan repositori non-telanjang untuk bekerja secara lokal dan repositori kosong sebagai server / hub pusat untuk membagikan perubahan Anda dengan orang lain. Misalnya, ketika Anda membuat repositori di github.com, itu dibuat sebagai repositori kosong.
Jadi, di komputer Anda:
git init
touch README
git add README
git commit -m "initial commit"
di server:
cd /srv/git/project
git init --bare
Kemudian pada klien, Anda mendorong:
git push username@server:/srv/git/project master
Anda kemudian dapat menyimpan sendiri pengetikan dengan menambahkannya sebagai remote.
Repositori di sisi server akan mendapatkan komit melalui tarik dan tekan, dan bukan dengan Anda mengedit file dan kemudian melakukannya di mesin server, oleh karena itu repositori kosong.
Detail
Anda dapat mendorong ke repositori yang bukan repositori kosong, dan git akan mengetahui bahwa ada repositori .git di sana, tetapi karena kebanyakan repositori "hub" tidak memerlukan copy pekerjaan, adalah normal menggunakan repositori kosong untuk dan direkomendasikan karena tidak ada gunanya memiliki copy pekerjaan di repositori semacam ini.
Namun, jika Anda mendorong ke repositori non telanjang, Anda membuat copy pekerjaan tidak konsisten, dan git akan memperingatkan Anda:
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'.
Anda dapat melewati peringatan ini. Tetapi pengaturan yang disarankan adalah: gunakan repositori non-telanjang untuk bekerja secara lokal dan repositori telanjang sebagai hub atau server pusat untuk mendorong dan menarik dari.
Jika Anda ingin berbagi pekerjaan secara langsung dengan copy pekerjaan pengembang lain, Anda dapat menarik satu sama lain dari repositori alih-alih mendorong.