Saya ingin memamerkan beberapa pekerjaan saya dengan mengunggahnya ke akun GitHub saya. Namun, ada beberapa file yang berisi kata sandi, seperti koneksi basis data.
Apakah ada cara menandai file sebagai tidak sesuai dengan Git sehingga tidak dapat muncul di GitHub?
.gitignore
. AFAIK tidak ada cara mengatakan 100% penuh-buktigit
untuk menghindari melakukan file tertentu dalam semua kasus. Meskipun ini dapat dilihat sebagai fitur ... memungkinkan perintah eksplisit untuk mengesampingkan konfigurasi umum.Jawaban:
Pertama, tidak ada cara untuk membuat beberapa file dan komit terlihat di repositori Git lokal Anda tetapi entah bagaimana tidak dapat dilihat di GitHub; jika Anda memiliki file yang dikomit di Git, itu akan muncul di GitHub.
Kedua, tidak ada yang sederhana dan cara praktis untuk pernah menandai file individu itu sendiri sebagai Tapi ada “uncommitable.” Jelas cara untuk mengabaikan file dalam Git repo: Dengan menambahkan file (s) -termasuk path relatif mereka jika dibutuhkan — ke
.gitignore
file :Membuat dasar
.gitignore
cukup mudah karena itu hanya file teks biasa. Jadi — misalnya — jika saya memilikiconfig.php
file di root Anda, Anda akan melakukan ini; dengan asumsi Anda menggunakan PHP tetapi konsep ini berlaku untuk pengaturan apa pun. Saya juga menggunakan Nano sebagai editor teks saya dalam contoh ini tetapi merasa bebas untuk menggunakan editor teks apa pun yang biasanya Anda gunakan untuk ini:Dan tambahkan saja nama file itu ke file itu:
Simpan dan sekarang Git hanya akan mengabaikan file itu.
Yang mengatakan, apa yang ingin saya lakukan untuk setup seperti ini adalah untuk menjaga sampel / contoh dikonfigurasikan dari spesifikasi sensitif dalam repositori jadi saya punya beberapa referensi tentang apa format file config adalah file bernama sesuatu seperti ini:
Dengan begitu Anda tahu persis bagaimana
config.php
file harus diatur melaluiconfig.SAMPLE.php
dan Anda dapat memastikan bahwa yang sebenarnyaconfig.php
tidak pernah disentuh oleh Git.Juga, jika Anda berencana untuk memamerkan kode Anda, Anda perlu berharap bahwa seseorang akan mencoba untuk mengambil kode itu dan mengimplementasikannya pada sistem mereka sendiri dengan cara tertentu. Ingat, kami bukan Anda dan tanpa file konfigurasi sampel di repo Anda, orang-orang tidak akan benar-benar mengerti bagaimana menerapkan kode sendiri. Heck mereka mungkin bahkan berpikir Anda tidak kompeten karena Anda tidak memberikan contoh konfigurasi dasar.
sumber
database_url = Environment.DATABASE_URL
dan meninggalkan komentar di atas seperti# postgres://username:password@localhost/dbname
.Anda juga dapat menambahkan kait pra-komitmen untuk menerapkan pemeriksaan kewarasan. Direktori
.git/hooks
setiap repositori git memiliki beberapa skrip sampel.Script yang dipanggil
pre-commit
dijalankan jika ada sebelum setiap commit, dan nilai pengembalian yang tidak nol membatalkan komit.Misalnya, Anda dapat memiliki skrip sederhana seperti ini:
Dan jika itu
filename
cocok, komit gagal.sumber
.gitignore
adalah praktik yang sangat umum — dan biasanya dipahami — bagi siapa pun yang menggunakan Git. Tetapi skrip pra-komit tidak benar-benar digunakan oleh sebagian besar pengguna Git. Ini membutuhkan beberapa pengetahuan tentang pengaturan dan memerlukan beberapa alasan mengapa metode seperti ini lebih disukai daripada hanya menggunakan.gitignore
file. Tetapi ini sangat berguna untuk beberapa kasus yang lebih kompleks, tetapi ini jelas sebuah konsep yang akan Anda gunakan ketika Anda benar-benar tahu Anda perlu menggunakannya.Apa yang dikatakan @JakeGould. Dalam beberapa kasus Anda juga dapat menggunakan bit file khusus seperti
skip-worktree
atauassume-unchanged
yang dapat diatur dengan cara berikut; untuk perbedaan antara keduanya, lihat jawaban Stack Overflow ini :Yang kemudian akan menyembunyikan perubahan tambahan ke file yang sudah ada dan yang dapat Anda gunakan jika Anda benar-benar ingin file ada di sana setiap kali menarik. Tetapi saya akan menyarankan Anda untuk hanya menggunakannya jika Anda benar-benar tahu apa yang Anda lakukan.
sumber
Gunakan kata
.gitignore
seperti @JakeGould. Selain itu, beberapa info terkait:.gitignore
menjaga file dari dilacak; jika sudah dilacak, gunakangit rm --cached
untuk menghapusnya$GIT_DIR/info/exclude
juga akan diabaikan~/.gitconfig
juga diabaikan.Lihat dokumentasi resmi Git untuk lebih jelasnya.
sumber
Untuk memperluas jawaban Jake dan 46: satu praktik yang sangat baik adalah memiliki ekstensi yang konsisten yang Anda gunakan untuk file tempat Anda memasukkan informasi pribadi, dan gunakan
.gitignore
untuk selalu mengecualikan file dengan ekstensi itu secara global (menggunakan.gitconfig
file seperti yang disebutkan di tempat lain untuk selalu diabaikan) untuk pengguna Anda).Dengan begitu, Anda dapat memiliki misalnya:
dan jika Anda telah dikecualikan
*.exc
secara global, maka Anda tahu itu tidak akan dilakukan, bahkan jika Anda lupa untuk secara individu mengecualikan file tertentu.sumber