Saya memiliki beberapa file di situs CodeIgniter yang ingin saya miliki di repo tetapi tidak melacak perubahan apa pun pada.
Sebagai contoh, saya menyebarkan instalasi baru kerangka ini ke klien baru, saya ingin file-file berikut untuk diunduh (mereka memiliki nilai default CHANGEME) dan saya hanya perlu membuat perubahan khusus untuk klien ini (kredensial basis data, info alamat email, CSS khusus).
// the production config files i want the files but they need to be updated to specific client needs
application/config/production/config.php
application/config/production/database.php
application/config/production/tank_auth.php
// index page, defines the environment (production|development)
/index.php
// all of the css/js cache (keep the folder but not the contents)
/assets/cache/*
// production user based styling (color, fonts etc) needs to be updated specific to client needs
/assets/frontend/css/user/frontend-user.css
Saat ini jika saya lari
git clone [email protected]:user123/myRepo.git httpdocs
dan kemudian edit file di atas, semuanya hebat. Sampai saya merilis perbaikan terbaru atau patch dan jalankan git pull
. Semua perubahan saya kemudian ditimpa.
Jawaban:
git memiliki solusi berbeda untuk melakukan ini. Pertama-tama ubah file yang tidak ingin Anda lacak dan gunakan perintah berikut:
dan jika Anda ingin melacak perubahan lagi gunakan perintah ini:
dokumentasi git-update-index
sumber
--skip-worktree
opsi ini lebih cocok untuk pekerjaan ini daripada--assume-unchanged
.Untuk menarik jawaban dari komentar jawaban lain:
$ git update-index --skip-worktree FILENAME
Tampaknya menjadi opsi yang lebih baik daripada
--assume-unchanged
Lebih banyak dapat dibaca tentang ini di sini: Git - Perbedaan Antara 'menganggap-tidak berubah' dan 'melewatkan-kerja'
sumber
Untuk proyek Code Igniter saya, saya menyimpan database.php.example dan config.php.example dalam repo.
Kemudian saya menambahkan config.php dan aplikasi / config / database.php ke file .gitignore .
Jadi, akhirnya, ketika saya menggunakan, saya dapat menyalin file .example (ke config.php dan database.php), menyesuaikannya, dan mereka tidak akan dilacak oleh GIT.
sumber
Saya akan meletakkannya di
.gitignore
file Anda dan menyalinnya secara manual sesuai kebutuhan.Jadi nama file kerangka akan di git, nama file abaikan tidak akan di git (tetapi akan di. Gitignore). Dengan begitu, ketika langkah manual untuk menyalinnya ke 'aktual' dari 'templat' (mungkin lebih baik nama daripada kerangka) dilakukan, mereka langsung diabaikan.
sumber
git rm <file>
. Tujuannya adalah IE: file config.php. Saya ingin menyimpan file konfigurasi tetapi saya jelas tidak ingin melacak kredensial database dari klien ke klien karena mereka berbeda.git add file1
lalu edit.gitignore
file Anda . File yang dikomit akan tetap di sana dan tidak diperbarui. Atau: Anda dapat menambahkan file ke.gitignore
dan kemudian menambahkannya dengangit add --force file1
untuk memaksa file masuk. Anda dapat menggunakan opsi ke-2 setiap kali Anda harus menimpa fileJawaban yang diberikan adalah menyelesaikan masalah hanya sebagian, tetapi memperkenalkan lebih banyak masalah.
Saya perlu menyimpan file "Web.Local.config". Satu-satunya solusi yang berhasil bagi saya adalah:
1. Kecualikan file dari proyek
2. Buat salinan file yang terpisah sebagai Web.LocalTemplate.config
Sekarang "Web.LocalTemplate.config" dilacak oleh Git, semua pengembang dapat menggunakannya sebagai titik awal. Namun, "Web.Local.config", tidak menjadi bagian dari proyek akan secara otomatis diabaikan.
sumber
git update-index --skip-worktree FILENAME
hanya menyelesaikan masalah Anda sebagian, atau bahkan menambahkan lebih banyak masalah ?? Ini memecahkan apa yang Anda coba lakukan. Apakah kamu sudah mencobanya?