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?
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"
Jika tampaknya seperti Git isn't melihat perubahan yang anda buat untuk anda .gitignore
file, anda mungkin ingin memeriksa poin-poin berikut:
.gitignore
file yang bisa mengganggu lokal satugit add [perubahan yang belum dikomit anda ingin menyimpan] && git commit git rm -r --cached . git add . git commit-m "tetap tidak terlacak file"
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
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!
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.
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.* #<-Space
workingIgnore.*#<-Nospace
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.
Saya melihat bahwa pengkodean .gitignore
itu memiliki efek-jika file Unicode, itu diabaikan, jika itu adalah ASCII, bukan't.
Proses:
PS> git status
.gitignore
's encoding: PS> Get-FileEncoding .gitignore
PS> Set-Isi .gitignore -Encoding Ascii -Nilai (Get-Konten .gitignore)
PS> git status
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:
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.
Semua jawaban di sini adalah benar-benar workarounds. Yang anda butuhkan untuk membuat .gitignore file sebelum anda menjalankan git init. Jika tidak
git` 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.
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.
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.
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
Bagi saya tidak ada jawaban sebelumnya bekerja. Aku harus salin .gitignore
teks ke dalam exclude.txt
file yang ditemukan di
<Your-project-folder>\.git\info
Setelah selesai, refresh perubahan anda dan semua terpantau file yang hilang. Melakukan seperti biasa.
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.
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.
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
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:
ms-persist.xml
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.