Berikut adalah definisi dari repositori telanjang dari gitglossary :
Repositori kosong biasanya adalah direktori yang dinamai sesuai dengan akhiran .git yang tidak memiliki salinan check-out lokal dari salah satu file di bawah kontrol revisi. Yaitu, semua file administrasi dan kontrol Git yang biasanya ada di sub-direktori tersembunyi .git secara langsung hadir di direktori repository.git, dan tidak ada file lain yang hadir dan diperiksa. Biasanya penerbit repositori publik menyediakan repositori kosong.
Saya tiba di sini karena saya bermain-main dengan "repositori lokal" dan ingin dapat melakukan apa pun yang saya inginkan seolah-olah itu adalah repositori jarak jauh. Saya hanya bermain-main, mencoba belajar tentang git. Saya akan berasumsi bahwa ini adalah situasi bagi siapa pun yang ingin membaca jawaban ini.
Saya akan senang untuk pendapat ahli atau beberapa contoh-counter khusus, namun tampaknya (setelah mencari-cari beberapa kode sumber git yang saya temukan) hanya pergi ke file .git/config
dan menetapkan atribut inti telanjang menjadi benar , git akan membiarkan Anda melakukan apa pun Anda ingin melakukan repositori dari jarak jauh. Yaitu baris berikut harus ada di .git/config
:
[core]
...
bare = true
...
(Ini kira-kira apa yang git config --bool core.bare true
akan dilakukan perintah , yang mungkin direkomendasikan untuk menghadapi situasi yang lebih rumit)
Pembenaran saya untuk klaim ini adalah bahwa, dalam kode sumber git, tampaknya ada dua cara berbeda untuk menguji apakah repo kosong atau tidak. Salah satunya adalah dengan memeriksa variabel global is_bare_repository_cfg
. Ini diatur selama beberapa tahap persiapan eksekusi, dan mencerminkan nilai yang ditemukan dalam .git/config
file. Yang lainnya adalah fungsi is_bare_repository()
. Berikut adalah definisi fungsi ini:
int is_bare_repository(void)
{
/* if core.bare is not 'false', let's see if there is a work tree */
return is_bare_repository_cfg && !get_git_work_tree();
}
Aku sudah tidak memiliki waktu atau keahlian untuk mengatakan ini dengan keyakinan mutlak, tetapi sejauh yang saya tahu jika Anda memiliki bare
atribut set ke true
dalam .git/config
, ini harus selalu kembali 1
. Fungsi lainnya mungkin untuk situasi berikut:
- core.bare tidak terdefinisi (yaitu tidak benar atau salah)
- Tidak ada worktree (yaitu subdirektori .git adalah direktori utama)
Saya akan bereksperimen dengan itu ketika saya nanti, tetapi ini akan menunjukkan bahwa pengaturan core.bare = true sama dengan menghapus core.bare dari file konfigurasi dan mengatur direktori dengan benar.
Bagaimanapun, pengaturan core.bare = true tentu akan memungkinkan Anda mendorongnya, tapi saya tidak yakin apakah kehadiran file proyek akan menyebabkan beberapa operasi lain menjadi serba salah. Ini menarik dan saya kira instruktif untuk mendorong ke repositori dan melihat apa yang terjadi secara lokal (yaitu menjalankan git status
dan memahami hasilnya).
mv repo/.git repo.git; rm -rf repo