Tentu, saya melakukan ini dari waktu ke waktu menggunakan
git update-index --assume-unchanged [<file> ...]
Untuk membatalkan dan mulai melacak lagi (jika Anda lupa file apa yang tidak dilacak, lihat pertanyaan ini ):
git update-index --no-assume-unchanged [<file> ...]
Dokumentasi yang relevan :
- [no-] menganggap-tidak berubah
Ketika bendera ini ditentukan, nama-nama objek yang direkam untuk jalur tidak diperbarui. Sebagai gantinya, opsi ini mengeset / membatalkan bit "asumsikan tidak berubah" untuk jalur. Ketika bit "asumsi tidak berubah" aktif, pengguna berjanji untuk tidak mengubah file dan memungkinkan Git untuk berasumsi bahwa file pohon kerja cocok dengan apa yang dicatat dalam indeks. Jika Anda ingin mengubah file tree yang berfungsi, Anda perlu menghapus bit untuk memberi tahu Git. Ini kadang-kadang membantu ketika bekerja dengan proyek besar pada sistem file yang memiliki lstat(2)system call yang sangat lambat (misalnya cifs).
Git akan gagal (anggun) jika perlu memodifikasi file ini dalam indeks misalnya ketika menggabungkan komit; dengan demikian, jika file yang diasumsikan tidak dirubah diubah ke hulu, Anda perlu menangani situasi secara manual.
Gagal dengan anggun dalam hal ini berarti, jika ada perubahan di bagian hulu ke file tersebut (perubahan yang sah, dll.) Saat Anda melakukan penarikan, akan muncul tulisan:
$ git pull
…
From https://github.com/x/y
72a914a..106a261 master -> origin/master
Updating 72a914a..106a261
error: Your local changes to the following files would be overwritten by merge:
filename.ext
dan akan menolak untuk bergabung.
Pada titik itu, Anda dapat mengatasinya dengan mengembalikan perubahan lokal Anda, berikut ini caranya:
$ git checkout filename.ext
kemudian tarik lagi dan modifikasi ulang file lokal Anda, atau dapat diatur –no-assume-unchangeddan Anda dapat melakukan simpanan dan penggabungan normal, dll. pada saat itu.