Jawaban:
Jangan lupa, menurut gitignore , bahwa ada urutan prioritas dalam berbagai "abaikan sumber pola" yang dipertimbangkan Git:
$GIT_DIR/info/exclude.core.excludesfile.Dua yang terakhir bisa menjadi solusi untuk masalah Anda tetapi:
(Lihat juga pertanyaan SO ini )
Dua solusi lain melibatkan memperbarui indeks ( git update-index):
git update-index --assume-unchanged: lihat " Git: membuka file hanya dalam repo lokal dan menyimpannya di repo jarak jauh ". git update-index --assume-unchangeddi direktori ". --no-assume-unchangeuntuk membalikkan efek: Lihat " Apakah mungkin git addfile saat ini dilindungi assume-unchanged? ".Namun, ketika Anda checkout cabang lain atau ketika Anda git pull, status "abaikan" itu mungkin diatur ulang. Maka pilihan lain:
git update-index --skip-worktree; Lihat:
Perbedaan antara keduanya dijelaskan dalam " Git - Perbedaan Antara ' assume-unchanged' dan ' skip-worktree' ".
update-index --skip-work-tree. Saya telah mengedit jawaban untuk menambahkan beberapa tautan ke jawaban lama saya yang menggambarkan kedua update-indexperintah itu.
Jika Anda dapat memodifikasi, .git/info/excludeAnda dapat menempatkan aturan yang sama di sana. Tetapi file itu hanya dalam repo lokal Anda.
.gitdirektori dalam submodule ...
.gitfolder submodule sebenarnya di parent_repo/.git/modules/submodule_name. Jadi, Anda akan mengeditparent_repo/.git/modules/submodule_name/info/exclude
Ada tiga cara untuk memberi tahu GIT file mana yang harus diabaikan:
.gitignore file$GIT_DIR/.git/info/excludecore.excludesfilepengaturanDua poin terakhir bisa menyelesaikan masalah Anda.
Untuk informasi lebih lanjut, lihat gitignore (5) .
Jika Anda hanya ingin memiliki beberapa file lokal di repositori dan lokasi subdirektori fleksibel, Anda dapat memasukkan file Anda tracked_dir1/tracked_dir2/untracked_dir/dan kemudian menambahkan tracked_dir1/tracked_dir2/untracked_dir/.gitignoredengan isi seperti:
*
Yaitu
$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>
Saya telah dalam situasi yang sama, jadi saya menambahkan solusi pilihan saya yang tidak saya lihat disebutkan. Masalahnya git update-index --assume-unchangeddalam hal ini adalah Anda tidak bisa melakukan itu untuk file yang tidak dilacak. Kamu berkata
Saya tidak dapat mengubah .gitignore dari repositori saya.
Saya akan berasumsi apa yang Anda maksud adalah bahwa Anda tidak dapat mendorong perubahan apa pun .gitignoreke asal. Jika itu yang dapat Anda lakukan adalah menambahkan file yang tidak terlacak ke lokal Anda .gitignore, maka lakukan git update-index --assume-unchanged .gitignoreagar perubahan Anda ke .gitignoretidak pernah didorong. Sekarang Anda mengabaikan file (kemungkinan) tidak terlacak, dan tidak mempengaruhi .gitignorefile jarak jauh .
Abaikan perubahan lokal untuk file yang dilacak:
git update-index --assume-unchanged my-file.php
Batalkan perubahan lokal ke file yang dilacak:
git update-index --no-assume-unchanged my-file.php
sumber: git help update-index
--[no-]assume-unchanged
...
This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
changed upstream, you will need to handle the situation manually.
Anda dapat menggunakan metode global gitignore alih-alih memodifikasi yang ada di proyek https://help.github.com/articles/ignoring-files/#create-a-global-gitignore
update-index --assume-unchanged@see stackoverflow.com/a/25253144/292408