Saya memiliki direktori tmp di repo git saya, saya ingin tetap ada, tetapi diabaikan. Saya menambahkannya ke .gitignore
, tetapi git status
masih memberi tahu saya tentang perubahan pada file di direktori itu. Saya mencoba git rm -r --cached
, tetapi itu menghapusnya dari repo jarak jauh. Bagaimana cara menghentikan pelacakan perubahan ke direktori ini, tetapi tetap mengizinkannya? Saya juga perlu melakukan ini untuk 1 file, tetapi perubahan itu juga muncul git status
setelah .gitignore
mereka. Apa yang harus saya lakukan?
git
version-control
21312312
sumber
sumber
Jawaban:
Sebagai gantinya
.gitignore
, Anda dapat memperbarui repositori git lokal dengan menjalankan perintah berikut:Dalam hal ini file sedang dilacak di repo asal. Anda dapat memodifikasinya di repo lokal Anda dan git tidak akan pernah menandainya sebagai diubah. Baca lebih lanjut di:
sumber
git update-index --no-assume-unchanged <file>
. Jika Anda ingin mendaftarnyagit ls-files -v | grep '^h'
.Mengabaikan perubahan yang dibuat pada file sementara membiarkannya ada adalah tujuan sebenarnya dari
.gitignore
. Jadi menambahkan file (atau direktori) ke.gitignore
adalah satu-satunya hal yang harus Anda lakukan.Tetapi masalah Anda adalah git sudah melacak file yang ingin Anda abaikan dan
.gitignore
tidak berlaku untuk file yang dilacak. Satu-satunya cara untuk menghentikan pelacakan ini adalah dengan memberi tahu git untuk menghapusnya. Dengan menggunakangit rm --cached
, Anda mencegah git menghapus file lokal Anda, tetapi repositori lain yang mendapatkan perubahan akan menerapkan penghapusan. Saya tidak berpikir ada cara untuk menghindarinya dari repositori Anda sendiri. Anda harus melakukan sesuatu di repositori lain, atau menerima file akan dihapus.Untuk mencegah penghapusan repositori satu sama lain, Anda dapat:
git rm --cached
file dan komit sebelum menarik perubahan Anda. Git akan menggabungkan dua penghapusan dengan baik tanpa menyentuh file yang sudah tidak terlacak.sumber
git update-index --assume-unchanged <file>
. Lihatlah di: blog.pagebakers.nl/2009/01/29/…git rm --cached <filename> -r
dan setelah push ini berubah ke repositori lagi sehingga file dihapusLetakkan a
/
di akhir nama direktori di.gitignore
file Anda , misJika telah melacak file di dalam direktori itu, Anda perlu memberi tahu git untuk melupakannya terlebih dahulu (sebelum Anda menambahkan dir ke daftar abaikan). Dengan asumsi Anda tidak memiliki apa pun yang penting di sana (yaitu Anda dapat menggaruknya):
File baru di direktori itu tidak akan dilacak.
The
--cached
pilihan untukgit rm
hanya bekerja pada indeks (tertunda perubahan yang lebih atau kurang). Ini tidak berpengaruh pada pohon kerja atau status apa yang telah dilacak atau tidak.sumber
the/dir/
danthe/dir/*
.gitignore tidak berpengaruh pada file yang dilacak.
Yang Anda inginkan adalah menyetel bit asumsikan-tidak berubah pada file di direktori tmp /. Ada penjelasan bagus bagaimana melakukannya di sini: Git: untrack file hanya di repo lokal dan simpan di repo jarak jauh
Selain itu, satu baris untuk menyetel asumsi-tidak berubah pada semua file dalam direktori - git update-index --assume-unchanged pada direktori .
sumber
Kedengarannya seperti Anda mencoba untuk melacak file (misalnya
index.php
), menambahkannya ke repositori jarak jauh, kemudian berhenti menonton pelacakannya, sambil menyimpan file di remote (yaitu tetapindex.php
tidak berubah pada repo jarak jauh saat mengubahnya secara lokal).Dari apa yang saya pahami, git tidak bisa melakukan ini. Anda dapat melacak file, atau tidak. Jika Anda melacak file, itu ada di repo jarak jauh, dan berubah ketika Anda melakukan perubahan padanya. Jika Anda tidak melacak file, itu tidak ada di repo jarak jauh.
Karena tidak mungkin melakukan apa yang Anda inginkan dengan git, ada kemungkinan solusi lain, bergantung pada situasi Anda. Misalnya, mengapa Anda tidak ingin
index.php
mengubah di remote ketika Anda mengubahnya secara lokal? Apakah ada pengaturan khusus pengguna di file? Jika ini masalahnya, Anda dapat melakukan:Sekarang edit index_template.php menjadi seperti yang Anda inginkan untuk muncul di repo jarak jauh. Tambahkan sesuatu ke README Anda untuk memberi tahu orang-orang yang menggunakan repositori Anda bahwa setelah mereka menggandakannya, mereka harus menyalin index_template.php ke index.php dan mengeditnya sesuai dengan kebutuhan mereka.
Ketika seseorang mengkloning repo Anda, mereka harus membuatnya sendiri
index.php
. Anda telah membuatnya mudah untuk mereka: cukup salinindex_template.php
keindex.php
dan revisi dengan pengaturan khusus komputer.sumber