Dari dokumentasi Git yang relevan :
Pola yang khusus untuk repositori tertentu tetapi yang tidak perlu dibagi dengan repositori terkait lainnya (misalnya, file tambahan yang hidup di dalam repositori tetapi khusus untuk alur kerja satu pengguna) harus masuk ke $GIT_DIR/info/exclude
file.
The .git/info/exclude
berkas memiliki format yang sama seperti setiap .gitignore
berkas. Pilihan lain adalah mengatur core.excludesFile
nama file yang berisi pola global.
Catatan, jika Anda sudah memiliki perubahan yang tidak bertahap, Anda harus menjalankan yang berikut setelah mengedit pola abaikan Anda:
git update-index --assume-unchanged <file-list>
Catatan tentang$GIT_DIR
: Ini adalah notasi yang digunakan di seluruh manual git hanya untuk menunjukkan path ke repositori git. Jika variabel lingkungan diatur, maka itu akan menimpa lokasi repo mana Anda berada, yang mungkin bukan yang Anda inginkan.
Sunting : Cara lain adalah menggunakan:
git update-index --skip-worktree <file-list>
Balikkan dengan:
git update-index --no-skip-worktree <file-list>
git update-index --assume-unchanged [<file>...]
setelah melakukan penambahan pada file yang dikecualikan. Perubahan tidak akan diambil sampai saat itu.skip-worktree
kemungkinan akan lebih disukaiassume-unchanged
.Pembaruan : Pertimbangkan untuk menggunakan
git update-index --skip-worktree [<file>...]
sebagai gantinya, terima kasih @danShumway! Lihat penjelasan Borealid tentang perbedaan kedua opsi .Jawaban lama:
Jika Anda perlu mengabaikan perubahan lokal untuk melacak file (kami memiliki itu dengan modifikasi lokal untuk mengkonfigurasi file), gunakan
git update-index --assume-unchanged [<file>...]
.sumber
git update-index --assume-unchanged my-file.php
agar mulai diabaikan. Terima kasih atas tipnya!git update-index --no-assume-unchanged my-file.php
.git/info/exclude
ini yang Anda inginkan (untuk menghindari polusi yang sering dibagikan dan dilacak .gitignore)--assume-unchanged
sebelum membaca pembaruan Anda . Aku membuka kancing dengan--no-assume-unchanged
dan kemudian melakukan--skip-worktree
... Am I di jelas?Tambahkan baris berikut ke bagian [alias] file .gitconfig Anda
Sekarang Anda dapat menggunakan
git ignore my_file
untuk mengabaikan perubahan pada file lokal, dangit unignore my_file
untuk berhenti mengabaikan perubahan.git ignored
daftar file yang diabaikan.Jawaban ini diperoleh dari http://gitready.com/intermediate/2009/02/18/temporently-ignoring-files.html .
sumber
Anda memiliki beberapa opsi:
.gitignore
di direktori kerja Anda (atau terapkan secara otomatis menggunakan topgit atau alat tambalan lain semacam itu).$GIT_DIR/info/exclude
file Anda , jika ini khusus untuk satu pohon.git config --global core.excludesfile ~/.gitignore
dan tambahkan pola ke~/.gitignore
. Opsi ini berlaku jika Anda ingin mengabaikan pola tertentu di semua pohon. Saya menggunakan ini untuk.pyc
dan.pyo
file, misalnya.Juga, pastikan Anda menggunakan pola dan tidak secara eksplisit menyebutkan file, jika ada.
sumber
git config --global
mengatur opsi secara global.Saya pikir Anda mencari:
yang mengabaikan perubahan yang dibuat lokal
Inilah http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ penjelasan lebih lanjut tentang solusi ini!
untuk membatalkan penggunaan:
sumber
--skip-worktree
dan--assume-unchanged
pada pertanyaan SO ini--skipworktree
, haruskah saya kemudian berubah pikiran dan ingin mulai melacak file lagi?git update-index --no-skip-worktree <file>
Anda dapat menginstal beberapa alias git untuk membuat proses ini lebih sederhana. Ini mengedit
[alias]
simpul.gitconfig
file Anda .Pintasan yang dipasang untuk Anda adalah sebagai berikut:
git ignore config.xml
config.xml
- mencegah Anda dari melakukan perubahan itu secara tidak sengaja.git unignore config.xml
config.xml
- memungkinkan Anda lagi untuk melakukan perubahan itu.git ignored
Saya membangun ini dengan merujuk pada jawaban Phatmann - yang menyajikan
--assume-unchanged
versi yang sama.Versi yang saya sajikan menggunakan
--skip-worktree
untuk mengabaikan perubahan lokal. Lihat jawaban Borealid untuk penjelasan lengkap tentang perbedaannya, tetapi pada dasarnya--skip-worktree
tujuan pengembang adalah untuk mengubah file tanpa risiko melakukan perubahan mereka .The
git ignored
perintah disajikan di sini menggunakangit ls-files -v
, dan menyaring daftar untuk menunjukkan hanya entri-entri yang diawali denganS
tag. TheS
tag menunjukkan file yang statusnya "skip worktree". Untuk daftar lengkap dari status file yang ditunjukkan olehgit ls-files
: lihat dokumentasi untuk-t
opsi aktifgit ls-files
.sumber
'!git ls-files -v | grep "^S"'
? Perintah tidak bekerja untuk saya dengan itu di sana .. dan tampaknya berfungsi dengan baik dengan itu dihapus.Expansion of alias 'ignored' failed; 'git' is not a git command
. Ini masuk akal; tanpa tanda seru: git alias perintah Anda untukgit git ls-files …
.git ignore <filename>
, itu hanya berlaku untuk direktori itu. Dan ketika Anda akhirnya ingin membuat perubahan pada file itu dan komit serta dorong ke jarak jauh, cukup gunakan alat inigit unignore <filename>
untuk sementara waktu mulai melacaknya lagi! Terima kasih!Anda cukup menambahkan file .gitignore ke direktori home Anda, yaitu
$HOME/.gitignore
atau~/.gitignore
. Kemudian beri tahu git untuk menggunakan file itu dengan perintah:Ini adalah file .gitignore normal yang mendapat referensi ketika memutuskan apa yang harus diabaikan. Karena ada di direktori home Anda, itu hanya berlaku untuk Anda dan tidak mencemari file .gitignore proyek apa pun.
Saya telah menggunakan pendekatan ini selama bertahun-tahun dengan hasil yang bagus.
sumber
git check-ignore <file-name>
untuk memverifikasi. LMK jika itu bekerja untuk Anda=
:git config --global core.excludesfile ~/.gitignore
.gitignore
file di bawah direktori home dan menyuruh git untuk menggunakan file itu, lalu menghapus file yang ingin saya undak secara lokal. Namun, setelah saya mendorong perubahan, repositori jarak jauh juga menghapus file-file itu. Apakah saya melakukan sesuatu yang salah?.gitignore
adalah tentang mengabaikan file yang ada di direktori lokal Anda. Apa yang seharusnya Anda lakukan adalahgit rm --cached
yang menghapusnya dari repo tetapi membiarkannya di lokal Anda. Anda harus dapat kembali ke komit sebelumnya dengan sesuatu sepertigit reset --soft HEAD^
membatalkan komit itu dan memulihkan file Anda. Itulah keindahan dari git: semuanya masih ada dalam sejarah git Anda.Untuk mengabaikan file yang tidak dilacak terutama jika mereka berada di (beberapa) folder yang tidak dilacak, solusi sederhana adalah menambahkan
.gitignore
file ke setiap folder yang tidak dilacak dan masukkan dalam satu baris yang berisi*
diikuti dengan baris baru. Ini adalah solusi yang sangat sederhana dan mudah jika file yang tidak dilacak ada di beberapa folder. Bagi saya, semua file berasal dari satu folder yang tidak terlacakvendor
dan di atas hanya berfungsi.sumber
Jika repo Anda belum memiliki file .gitignore, maka solusi sederhana adalah membuat file .gitignore, dan di dalamnya tambahkan
.gitignore
ke daftar file yang akan diabaikan.sumber
.gitignore
file bersama di bagian atas. Tetapi file kotor saya ada di folder yang dalam, jadi saya baru saja menambahkan file saya sendiri di.gitignore
sebelahnya. +1