Apakah mungkin untuk "menyegarkan" repositori git setelah memperbarui file gitignore?
Saya baru saja menambahkan lebih banyak ignorations (?) Ke gitignore saya dan ingin menghapus hal-hal yang sudah ada dalam repo yang cocok dengan file baru.
Apakah mungkin untuk "menyegarkan" repositori git setelah memperbarui file gitignore?
Saya baru saja menambahkan lebih banyak ignorations (?) Ke gitignore saya dan ingin menghapus hal-hal yang sudah ada dalam repo yang cocok dengan file baru.
Jawaban:
Solusi yang disebutkan dalam " .gitignore file not ignoring " agak ekstrim, tetapi harus berfungsi:
# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
( Pastikan untuk melakukan pertama perubahan Anda ingin menyimpan , untuk menghindari insiden apapun jball037 komentar di bawah ini .
The --cached
opsi akan menyimpan file-file Anda tersentuh pada disk Anda sekalipun.)
Anda juga memiliki solusi lain yang lebih bagus dalam posting blog " Membuat Git mengabaikan file yang sudah dilacak ":
git rm --cached `git ls-files -i --exclude-standard`
Bassim menyarankan dalam editnya :
Jika Anda mendapatkan pesan kesalahan seperti
fatal: path spec '...' did not match any files
, mungkin ada file dengan spasi di jalurnya.Anda dapat menghapus semua file lain dengan opsi
--ignore-unmatch
:
git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard`
tetapi file yang tidak cocok akan tetap ada di repositori Anda dan harus dihapus secara eksplisit dengan melampirkan path mereka dengan tanda kutip ganda:
git rm --cached "<path.to.remaining.file>"
Saya mungkin salah paham, tetapi apakah Anda mencoba menghapus file yang baru saja diabaikan atau Anda ingin mengabaikan modifikasi baru pada file-file ini? Dalam hal ini, masalahnya berfungsi.
Jika Anda ingin menghapus file yang diabaikan sebelumnya yang dilakukan, maka gunakan
git rm –cached `git ls-files -i –exclude-standard`
git commit -m 'clean up'
git ls-files -i –exclude-standard
git commit -m 'bersih-bersih ``
Saya tahu ini adalah pertanyaan lama, tetapi solusi gracchus tidak berfungsi jika nama file berisi spasi. Solusi VonC untuk mengajukan nama dengan spasi adalah dengan tidak menghapusnya menggunakan --ignore-unmatch
, kemudian menghapusnya secara manual, tetapi ini tidak akan berfungsi dengan baik jika ada banyak.
Berikut ini adalah solusi yang memanfaatkan bash array untuk menangkap semua file.
# Build bash array of the file names
while read -r file; do
rmlist+=( "$file" )
done < <(git ls-files -i --exclude-standard)
git rm –-cached "${rmlist[@]}"
git commit -m 'ignore update'