.gitignore diabaikan oleh Git

Saya .gitignore file yang tampaknya diabaikan oleh Git - bisa .gitignore file menjadi korup? Format file yang, lokal atau budaya tidak Git harapkan?

Saya .gitignore:

# This is a comment
debug.log
nbproject/

Output dari git status:

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       debug.log
#       nbproject/
nothing added to commit but untracked files present (use "git add" to track)

Saya ingin debug.log dan nbproject/ tidak muncul di terpantau daftar file.

Di mana saya harus mulai mencari untuk memperbaiki hal ini?

Mengomentari pertanyaan (9)

Bahkan jika anda belum't dilacak file sejauh ini, Git tampaknya mampu "" tentang mereka bahkan setelah anda menambahkan mereka ke .gitignore.

CATATAN: Pertama kali anda melakukan perubahan saat ini, atau anda akan kehilangan mereka.

Kemudian jalankan perintah berikut dari atas folder repositori Git:

git rm -r --cached .
git add .
git commit -m "fixed untracked files"
Komentar (29)

Jika tampaknya seperti Git isn't melihat perubahan yang anda buat untuk anda .gitignore file, anda mungkin ingin memeriksa poin-poin berikut:

  • Mungkin ada global .gitignore file yang bisa mengganggu lokal satu
  • Ketika anda menambahkan sesuatu ke dalam .gitignore file, coba ini:

git add [perubahan yang belum dikomit anda ingin menyimpan] && git commit git rm -r --cached . git add . git commit-m "tetap tidak terlacak file"

  • Jika anda menghapus sesuatu dari .gitignore file, dan langkah-langkah di atas mungkin don't bekerja,jika anda menemukan langkah-langkah di atas tidak bekerja, coba ini:

git add-f [file yang anda ingin melacak lagi] git commit-m "Refresh menghapus file dari .gitignore file."

// Untuk contoh, jika anda ingin .java jenis file yang akan dilacak lagi, // Perintah harus: // git add-f *.jawa

Komentar (12)
Larutan

Tetap. OK, saya menciptakan .gitignore file di Notepad pada Windows dan bukan't bekerja. Ketika saya melihat .gitignore file di Linux itu tampak seperti diatur omong kosong mungkin Notepad ditulis Unicode daripada ASCII atau apapun 8-bit.

Jadi saya menulis ulang file pada Linux box, dan ketika aku menariknya kembali ke Windows itu bekerja dengan baik! Hore!

Komentar (15)

Tanpa menambahkan komit lain untuk proyek anda, satu baris akan cukup untuk membuat .gitignore bekerja seperti yang seharusnya:

git rm -r --cached debug.log nbproject

Ini akan menghapus mereka dari repositori, tapi masih menjaga mereka secara fisik. Dalam bahasa inggris, ia akan menghapus setiap sejarah perubahan yang terkait dengan mereka, dan juga tidak akan melacak perubahan mereka di masa depan komit. Anda dapat menemukan penjelasan yang lebih baik di sini.

Komentar (4)

Penyebab lain dari masalah ini adalah ruang kosong atau tab sebelum pernyataan:

Contoh:

# Be aware of the following:
 notWorkingIgnore.*
workingIgnore.*

Dan seperti yang ditunjukkan oleh komentar di bawah ini trailing space dapat menjadi masalah juga:


# Be aware of the following:
notWorkingIgnore.* #
Komentar (5)

Sebagai solusi lain, melakukan pertama dan menyadari bahwa anda akan ** kehilangan un-dilakukan perubahan.

Saya memiliki hasil yang lebih baik dengan ini:

git rm -r --cached .
git reset HEAD --hard
git status

Perhatikan bahwa status tidak't memiliki file diubah sekarang.

Komentar (1)

Saya melihat bahwa pengkodean .gitignore itu memiliki efek-jika file Unicode, itu diabaikan, jika itu adalah ASCII, bukan't.

Proses:

  1. Memverifikasi status: PS> git status
  2. Membuat fungsi untuk Mendapatkan-FileEncoding
  3. Tes .gitignore's encoding: PS> Get-FileEncoding .gitignore
  4. Mengubah encoding untuk ASCII: PS> Set-Isi .gitignore -Encoding Ascii -Nilai (Get-Konten .gitignore)
  5. Konfirmasi: PS> git status
Komentar (2)

Dalam kasus saya, itu's karena file yang sudah ada di repositori dan I'm mencoba untuk mengabaikannya.

Ini adalah hal-hal yang saya lakukan untuk memperbaiki masalah ini:

  • Copy file ke folder sementara
  • Menghapus mereka dari folder proyek saya.
  • Melakukan perubahan yang menghapus file-file dari repositori
  • Re-menambahkan file-file tersebut ke folder proyek saya

Oleh itu, setiap perubahan yang saya buat pada file-file yang diabaikan.

Saya pikir anda dapat't mengabaikan file-file yang sudah ada di repositori.

Komentar (1)

Semua jawaban di sini adalah benar-benar workarounds. Yang anda butuhkan untuk membuat .gitignore file sebelum anda menjalankan git init. Jika tidakgit` tidak akan pernah tahu anda perlu untuk mengabaikan file-file tersebut, karena mereka telah dilacak sudah.

echo .idea/ >> .gitignore
git init

Jika anda mengembangkan setiap hari, saya menyarankan anda untuk menambahkan kebiasaan diabaikan file untuk anda ~/.gitignore_global file. Dengan cara itu, git sudah akan tahu file mana yang anda (yang berarti "user", karena itu's file di direktori home anda) biasanya diabaikan.

Komentar (1)

Juga memeriksa direktori di mana anda menempatkan .gitignore.

Itu harus di akar dari proyek anda:

./myproject/.gitignore

Tidak di

./myproject/.git/.gitignore
Komentar (0)

Khusus untuk pengguna Windows: Jika anda memiliki terpantau file dan membersihkan/menghapus file cache tidak bekerja. Coba buka PowerShell dan mengkonversi .gitignore file UTF-8 encoding:

PowerShell $Myfile = Mendapatkan-Konten .\.gitignore` $Myfile Keluar | -File -Encoding "UTF8" .gitignore

Anda hanya perlu melakukan ini sekali untuk mengkodekan .gitignore file untuk direktori tersebut, dan karena file ini kemudian dikodekan dengan benar, setiap kali anda mengedit file yang di masa depan harus bekerja. Saya percaya ini adalah karena kesalahan dengan GitHub tidak menjadi soal untuk membaca non UTF-8 encoding untuk .gitignore file. Sejauh yang saya'm menyadari masalah ini belum diselesaikan untuk Windows. It's tidak terlalu besar, hanya sebuah rasa sakit untuk men-debug ketika itu's tidak bekerja.

Komentar (0)

Ada's masalah lain dengan .gitignore yang mungkin terjadi, terutama untuk pengguna Windows. Git tidak seperti itu ketika anda nama .gitignore (seperti kesatuan.gitignore).

Anda'll ingin selalu nama itu .gitignore, atau pada Windows, .gitignore. seperti Windows berpikir anda mencoba untuk mengganti nama tanpa nama.

Komentar (0)

Aku hanya berlari ke dalam masalah ini. Konten dalam saya .gitignore file terus muncul dalam daftar terpantau file.

Saya menggunakan ini untuk membuat abaikan file:

echo "node_modules" > .gitignore

Ternyata bahwa dua kutipan yang menyebabkan masalah bagi saya. Saya dihapus mengabaikan file dan kemudian digunakan perintah lagi tanpa tanda kutip, dan bekerja seperti yang diharapkan. Saya tidak perlu main-main dengan file encoding. I'm pada Windows 10 mesin menggunakan Cmder.

Contoh:

echo node_modules > .gitignore
Komentar (1)

Bagi saya tidak ada jawaban sebelumnya bekerja. Aku harus salin .gitignore teks ke dalam exclude.txt file yang ditemukan di

\.git\info

Setelah selesai, refresh perubahan anda dan semua terpantau file yang hilang. Melakukan seperti biasa.

Komentar (0)

Masalah saya itu (sebagai OP disarankan) yang korup .gitignore file. Aku't percaya bahwa itu dan mengabaikan kemungkinan sampai segala sesuatu yang lain gagal. Korupsi didn't muncul di vi, tapi ada dua byte pada awal file yang menyebabkan .gitignore file yang akan diabaikan. Bagi saya, ini hanya muncul ketika saya mengetik kucing .gitignore, yang menunjukkan:

��# Built application files
*.apk
*.ap_

# ...

Saya tidak tahu bagaimana ini berakhir ada, tetapi menciptakan file tetap masalah. Hex analisis korup file menunjukkan sebagai berikut:

user@dev ~/project/myproject $ xxd -b .gitignore
00000000: 11111111 11111110 00100011 00000000 00100000 00000000  ..#. .
00000006: 01000010 00000000 01110101 00000000 01101001 00000000  B.u.i.
Komentar (2)

Aku punya masalah ini, dengan .gitignore file yang berisi baris ini:

lib/ext/

Saya baru menyadari bahwa pada kenyataannya, direktori ini adalah simbolik link ke folder tempat lain:

ls -la lib/ext/
lrwxr-xr-x 1 roipoussiere users 47 Feb  6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib

Pada baris lib/ext/, Git benar-benar terlihat untuk folder, tapi sebuah link simbolik adalah file, jadi saya lib folder tidak diabaikan.

Aku tetap ini dengan mengganti lib/ext/ oleh lib/ext pada saya .gitignore file.

Komentar (0)

Aku punya masalah yang sama. Saya percaya masalah ini adalah CR vs CR+LF perbedaan. Aku menyembunyikan hal-hal pada saya .gitignore menggunakan CMD (Windows 7) dan perintah berikut:

Buruk:

echo "file_to_be_ignored.py" >> .gitignore<br>
echo "*~" >> .gitignore

Dll.

Masalah adalah bahwa perintah ini tidak tempat yang benar end-of-line marker untuk Git untuk mengenali baris baru (baik CR atau CR+LF ketika Git mengharapkan yang lain). Aku memecahkan masalah secara manual dengan mengganti setiap baris baru dalam Vim (Vim untuk menyelamatkan!) dan itu bekerja dengan sempurna.

Mencoba editing anda .gitignore di Notepad++ atau Vim (idealnya). Bahkan jika file yang terlihat seperti itu's diformat dengan benar, cobalah mengganti baris baru. Kedengarannya aneh, aku tahu, tapi itu bekerja untuk saya. :D

Komentar (0)

OK, jadi dalam kasus saya diterima solusi tidak bekerja, dan apa yang bekerja dijelaskan berikut ini:

Adalah Visual Studio 2013 mengabaikan anda .gitignore file?

Singkatnya:

  • Dekat Visual Studio.
  • Arahkan untuk anda .git folder
  • Hapus ms-persist.xml
  • Restart Visual Studio
Komentar (0)

Satu hal yang perlu juga melihat: Apakah anda tabungan anda .gitignore file dengan benar akhir baris?

Windows:

Jika anda're menggunakannya pada Windows, anda menyimpannya dengan Windows akhir baris? Tidak semua program akan melakukan ini secara default; Notepad++ dan banyak PHP editor default untuk Linux garis ujung sehingga file akan menjadi server yang kompatibel. Salah satu cara mudah untuk memeriksa ini, adalah membuka file di Windows Notepad. Jika segala sesuatu yang muncul pada salah satu baris, kemudian file disimpan dengan Linux akhir baris.

Linux:

Jika anda mengalami masalah dengan file yang bekerja di lingkungan Linux, membuka file dalam editor seperti Emacs atau nano. Jika anda melihat setiap karakter non-printable, kemudian file disimpan dengan Windows akhir baris.

Komentar (0)

Hanya menghapus folder atau file, yang dilakukan sebelumnya di Git, dengan perintah berikut. Kemudian gitignore file yang akan mencerminkan file yang benar.

    git rm -r -f "folder or files insides"
Komentar (0)