Pertanyaan Bagaimana saya bisa menambahkan direktori kosong ke repositori Git?


Bagaimana saya bisa menambahkan direktori kosong (yang tidak berisi file) ke repositori Git?


3469
2017-09-22 16:41


asal


Jawaban:


Cara lain untuk membuat direktori tetap kosong (dalam repositori) adalah membuat a .gitignore file di dalam direktori itu yang berisi empat baris berikut:

# Ignore everything in this directory
*
# Except this file
!.gitignore

Maka Anda tidak harus mendapatkan urutan yang benar seperti yang Anda lakukan di m104 larutan.

Ini juga memberi manfaat bahwa file dalam direktori itu tidak akan muncul sebagai "tidak terlacak" ketika Anda melakukan status git.

Membuat @GreenAsJadeKomentar terus-menerus:

Saya pikir perlu dicatat bahwa solusi ini tidak tepat seperti yang ditanyakan pertanyaan itu, tetapi tidak mungkin apa yang banyak orang cari pada pertanyaan ini akan dicari. Solusi ini menjamin bahwa direktori tetap kosong. Ia mengatakan "Saya benar-benar tidak ingin file diperiksa di sini". Sebagai lawan dari "Saya tidak memiliki file apa pun untuk check in di sini, namun, tapi saya perlu direktori di sini, file mungkin akan datang nanti".


3359
2018-05-31 22:10



Anda tidak bisa. Lihat FAQ Git.

Saat ini desain indeks git   (area pementasan) hanya mengizinkan file untuk   terdaftar, dan tidak ada yang cukup kompeten   untuk membuat perubahan agar kosong   direktori telah cukup peduli   situasi ini untuk memperbaikinya.

Direktori ditambahkan secara otomatis   saat menambahkan file di dalamnya. Bahwa   adalah, direktori tidak perlu ditambahkan   ke repositori, dan tidak dilacak   sendiri.

Anda bisa mengatakan "git add <dir>" dan itu   akan menambahkan file di sana.

Jika Anda benar-benar membutuhkan direktori   ada di checkout Anda harus membuat   file di dalamnya. .gitignore berfungsi dengan baik untuk   tujuan ini; Anda bisa membiarkannya kosong,   atau isi nama file Anda   berharap untuk muncul di direktori.


981
2017-09-22 16:42



Buat file kosong bernama .gitkeep di direktori, dan tambahkan itu.


594
2017-12-07 16:03



Anda selalu bisa meletakkan file README di direktori dengan penjelasan mengapa Anda ingin ini, jika tidak kosong, direktori di repositori.


368
2018-03-14 23:38



touch .keep

Di Linux, ini membuat file kosong bernama .keep. Nama ini lebih disukai .gitkeep karena yang pertama adalah agnostik bagi Git, sedangkan yang kedua adalah khusus untuk Git. Kedua, seperti yang dicatat oleh pengguna lain, the .git prefix convention harus disediakan untuk file dan direktori yang digunakan Git sendiri.

Atau, seperti dicatat di negara lain menjawab, direktori dapat berisi deskriptif README atau README.md mengajukan sebagai gantinya.

Tentu saja ini mengharuskan kehadiran file tidak akan menyebabkan aplikasi Anda rusak.


259
2018-01-29 04:29



Mengapa kita perlu folder berversi kosong

Hal pertama yang pertama:

Direktori kosong tidak dapat menjadi bagian dari pohon di bawah sistem versi Git.

Itu tidak akan dilacak. Namun ada skenario di mana "versi" direktori kosong dapat bermanfaat, misalnya:

  • membangun sebuah struktur folder yang telah ditentukan untuk folder proyek yang berguna, dan buat struktur ini tersedia untuk setiap pengguna / kontributor repositori; atau, sebagai kasus khusus di atas, membuat folder untuk berkas sementara, seperti cache/ atau logs/ direktori
  • beberapa proyek tidak akan berfungsi tanpa beberapa folder (yang sering merupakan petunjuk dari proyek yang dirancang dengan buruk, tetapi ini adalah skenario dunia nyata dan mungkin bisa ada, katakanlah, masalah izin).

Beberapa saran solusi

Banyak pengguna menyarankan:

  1. Menempatkan a README file atau file lain dengan beberapa konten untuk membuat direktori tidak kosong, atau
  2. Membuat sebuah .gitignore file dengan semacam "logika terbalik" (yaitu untuk menyertakan semua file) yang, pada akhirnya, melayani tujuan yang sama dari pendekatan # 1.

Sementara kedua solusi itu pasti berhasil Saya menemukan mereka tidak konsisten dengan pendekatan yang berarti untuk versi Git.

  • Mengapa Anda harus meletakkan file palsu atau README yang mungkin tidak Anda inginkan dalam proyek Anda?
  • Mengapa digunakan? .gitignore melakukan sesuatupenyimpanan file) yang sangat berlawanan dengan apa artinya (tidak termasuk file), meskipun itu mungkin?

pendekatan .gitkeep

Gunakan sebuah kosong file yang dipanggil .gitkeep untuk memaksa kehadiran folder dalam sistem versi.

Meskipun mungkin tampak bukan perbedaan besar:

  • Anda menggunakan file yang memiliki file tunggal tujuan menjaga folder. Anda tidak menaruh info yang tidak ingin Anda masukkan.

    Misalnya, Anda harus menggunakan READMEs sebagai, baik, READMEs dengan informasi yang berguna, bukan sebagai alasan untuk menyimpan folder.

    Pemisahan kekhawatiran selalu merupakan hal yang baik, dan Anda masih bisa menambahkan .gitignore untuk mengabaikan file yang tidak diinginkan.

  • Memberi nama .gitkeep membuatnya sangat jelas dan lugas dari nama file itu sendiri (dan juga ke pengembang lain, yang bagus untuk proyek bersama dan salah satu tujuan inti dari repositori Git) bahwa file ini adalah

    • File yang tidak terkait dengan kode (karena titik utama dan nama)
    • File yang jelas terkait dengan Git
    • Tujuannya (menjaga) dinyatakan dengan jelas dan konsisten dan semantis ditentang dalam maknanya mengabaikan

Adopsi

Saya telah melihat .gitkeep pendekatan yang diadopsi oleh kerangka kerja yang sangat penting seperti Laravel, CLI Angular.


202
2017-12-04 23:32



Seperti yang dijelaskan dalam jawaban lain, Git tidak dapat merepresentasikan direktori kosong di area pementasannya. (Lihat FAQ Git.) Namun, jika, untuk keperluan Anda, direktori cukup kosong jika berisi .gitignore hanya file, maka Anda dapat membuatnya .gitignore file dalam direktori kosong hanya melalui:

find . -type d -empty -exec touch {}/.gitignore \;

119
2018-05-03 15:17