.gitignore
File saya tampaknya diabaikan oleh Git - dapatkah .gitignore
file tersebut rusak? Format file, lokal atau budaya mana yang diharapkan oleh Git?
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 dalam daftar file yang tidak terlacak.
Di mana saya harus mulai mencari cara untuk memperbaikinya?
.gitignore
file Anda menggunakanANSI
atauUTF-8
menyandikan. Jika menggunakan sesuatu yang lain sepertiUnicode BOM
, mungkin Git tidak dapat membaca file.echo "file" > .gitignore
PowerShell, file tersebut memiliki pengkodean UCS-2!git rm --cached debug.log nbproject/
Jawaban:
Bahkan jika Anda belum melacak file sejauh ini, Git tampaknya dapat "tahu" tentang mereka bahkan setelah Anda menambahkannya
.gitignore
.PERINGATAN: Pertama komit perubahan Anda saat ini, atau Anda akan kehilangan mereka.
Kemudian jalankan perintah berikut dari folder teratas repositori Git Anda:
sumber
Jika sepertinya Git tidak memperhatikan perubahan yang Anda buat pada
.gitignore
file Anda, Anda mungkin ingin memeriksa poin-poin berikut:.gitignore
file global yang dapat mengganggu file lokal AndaSaat Anda menambahkan sesuatu ke file .gitignore, coba ini:
Jika Anda menghapus sesuatu dari file .gitignore, dan langkah-langkah di atas mungkin tidak berfungsi, jika Anda menemukan langkah-langkah di atas tidak berfungsi, coba ini :
sumber
git rm -r --cached .
bekerja untuk sayaTetap. OK, saya membuat file .gitignore di Notepad pada Windows dan tidak berfungsi. Ketika saya melihat file .gitignore di Linux itu tampak seperti omong kosong terorganisir - mungkin Notepad telah menulis Unicode daripada ASCII atau apa pun 8-bit.
Jadi saya menulis ulang file di kotak Linux saya, dan ketika saya menariknya kembali ke Windows berfungsi dengan baik! Hore!
sumber
Tanpa menambahkan komitmen lain ke proyek Anda, satu baris akan cukup untuk membuat
.gitignore
pekerjaan seperti yang seharusnya:Ini akan menghapusnya dari repositori, tetapi tetap menyimpannya secara fisik. Dalam bahasa Inggris yang sederhana, menghapus semua 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 .
sumber
git rm -r --cached someFile.php
dan itu bekerja seperti pesona :)Penyebab lain dari masalah ini adalah spasi atau tab kosong sebelum pernyataan:
Contoh:
Dan seperti yang ditunjukkan oleh komentar di bawah ini, ruang tambahan juga bisa menjadi masalah:
sumber
*.txt # Tex files
. Tapi git mengerti: "Abaikan file dengan ekstensitxt
"Saya perhatikan bahwa pengkodean
.gitignore
memiliki efek - jika file itu Unicode, diabaikan, jika ASCII, itu tidak.Proses:
PS> git status
.gitignore
Pengkodean uji :PS> Get-FileEncoding .gitignore
PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
PS> git status
sumber
touch .gitignore
danecho ".db" >> .gitignore
merutekan melalui powershell. Saya menemukan bahwaecho ".db" >> .gitignore"
pengaturan penyandian file ke UCS-2 LE-BOM, konversi cepat ke ASCII dan gitignore mulai berfungsi.Seperti solusi lainnya, komit terlebih dahulu dan sadari bahwa Anda akan kehilangan perubahan yang tidak berkomitmen.
Saya memiliki hasil yang lebih baik dengan ini:
Perhatikan bahwa statusnya seharusnya tidak memiliki file yang dimodifikasi sekarang.
sumber
Dalam kasus saya, itu karena file-file sudah ada di repositori dan saya mencoba untuk mengabaikannya.
Ini adalah hal-hal yang saya lakukan untuk memperbaiki masalah ini:
Pada saat itu, setiap perubahan yang saya buat pada file-file itu diabaikan.
Saya pikir Anda tidak dapat mengabaikan file yang sudah ada di repositori.
sumber
Semua jawaban di sini sebenarnya adalah solusi. Anda perlu membuat file .gitignore sebelum Anda menjalankan
git init
. Kalau tidak, tidakgit
akan pernah tahu Anda perlu mengabaikan file-file itu, karena mereka sudah dilacak.Jika Anda mengembangkan setiap hari, saya menyarankan Anda untuk menambahkan file yang diabaikan kebiasaan Anda ke file Anda
~/.gitignore_global
. Dengan begitu, Andagit
sudah tahu file mana yang Anda (artinya "pengguna Anda", karena itu file di direktori home Anda) biasanya diabaikan.sumber
~/.gitignore_global
adalah nama yang dapat dikonfigurasi. Jalankangit config --global core.excludesfile
pertama untuk melihat apakah Anda sudah memiliki file yang ditentukan. Jika tidak, jalankangit config --global core.excludesfile ~/.gitignore_global
..gitignore
dulu: ganti nama file yang dilacak..gitignore
akan diterapkan seolah-olah itu baru.Periksa juga direktori tempat Anda meletakkan
.gitignore
.Itu harus di root proyek Anda :
Tidak masuk
sumber
Khusus untuk pengguna Windows: Jika Anda memiliki file yang tidak dilacak dan menghapus / menghapus file yang di-cache tidak berfungsi. Coba buka PowerShell dan konversikan file .gitignore ke pengkodean UTF-8:
Anda hanya perlu melakukan ini satu kali untuk menyandikan file .gitignore untuk direktori itu, dan karena file tersebut kemudian disandikan dengan benar, setiap kali Anda mengedit file di masa depan itu harus berfungsi. Saya percaya ini karena kesalahan dengan GitHub tidak akan membaca pengkodean non UTF-8 untuk file .gitignore. Sejauh yang saya ketahui masalah ini belum terselesaikan untuk Windows. Ini bukan masalah besar, hanya rasa sakit untuk debug ketika itu tidak berfungsi.
sumber
Ada masalah lain dengan
.gitignore
itu yang mungkin terjadi, terutama untuk pengguna Windows. Git tidak suka ketika Anda memberi nama.gitignore
(sepertiunity.gitignore
).Anda pasti ingin selalu menamainya
.gitignore
, atau di Windows,.gitignore.
karena Windows berpikir Anda mencoba untuk menamainya tanpa nama file.sumber
Saya baru saja mengalami masalah ini. Konten dalam file .gitignore saya terus muncul dalam daftar file yang tidak dilacak.
Saya menggunakan ini untuk membuat file abaikan:
Ternyata kutip ganda menyebabkan masalah bagi saya. Saya menghapus file abaikan dan kemudian menggunakan perintah lagi tanpa tanda kutip, dan itu berfungsi seperti yang diharapkan. Saya tidak perlu dipusingkan dengan pengkodean file. Saya menggunakan mesin Windows 10 menggunakan Cmder .
Contoh:
sumber
Bagi saya tidak ada jawaban sebelumnya yang berfungsi. Saya harus menyalin
.gitignore
teks keexclude.txt
file yang ditemukan diSetelah selesai, segarkan perubahan Anda dan semua file yang tidak terlacak hilang. Berkomitmen seperti biasa.
sumber
Masalah saya adalah (seperti yang disarankan OP) file .gitignore yang korup. Saya tidak percaya itu dan mengabaikan kemungkinan sampai semuanya gagal. Korupsi tidak muncul
vi
, tetapi ada dua byte di awal file yang menyebabkan file .gitignore diabaikan. Bagi saya, ini hanya muncul ketika saya mengetikcat .gitignore
, yang menunjukkan:Saya tidak tahu bagaimana ini berakhir di sana, tetapi membuat ulang file memperbaiki masalah. Analisis hex file korup menunjukkan berikut ini:
sumber
Saya mengalami masalah ini, dengan file .gitignore yang berisi baris ini:
Saya baru menyadari bahwa sebenarnya, direktori ini adalah tautan simbolis ke folder di tempat lain:
Di telepon
lib/ext/
, Git sebenarnya mencari folder , tetapi tautan simbolik adalah file , jadilib
folder saya tidak diabaikan.Saya memperbaikinya dengan mengganti
lib/ext/
denganlib/ext
dalam file .gitignore saya.sumber
Saya punya masalah yang sama. Saya percaya masalahnya adalah perbedaan CR vs CR + LF. Saya menyembunyikan sesuatu di .gitignore saya menggunakan CMD (pada Windows 7) dan perintah berikut:
Buruk:
Dll
Masalahnya adalah bahwa perintah ini tidak menempatkan penanda end-of-line yang benar untuk Git untuk mengenali baris baru (baik CR atau CR + LF ketika Git mengharapkan yang lain). Saya memecahkan masalah dengan secara manual mengganti setiap baris baru di Vim (Vim untuk menyelamatkan!) Dan itu berhasil dengan sempurna.
Coba edit .gitignore Anda di Notepad ++ atau Vim (idealnya). Bahkan jika file tersebut terlihat diformat dengan benar, coba ganti baris baru. Kedengarannya aneh, saya tahu, tetapi itu berhasil untuk saya. : D
sumber
OK, jadi dalam kasus saya solusi yang diterima tidak bekerja, dan apa yang berhasil dijelaskan di sini:
Apakah Visual Studio 2013 mengabaikan file .gitignore Anda?
Pendeknya:
ms-persist.xml
sumber
Satu hal yang juga perlu diperhatikan: Apakah Anda menyimpan file .gitignore Anda dengan akhiran baris yang benar?
Windows:
Jika Anda menggunakannya di Windows, apakah Anda menyimpannya dengan ujung jalur Windows? Tidak semua program akan melakukan ini secara default; Notepad ++ dan banyak editor PHP default untuk akhir baris Linux sehingga file akan kompatibel dengan server. Salah satu cara mudah untuk memeriksanya, adalah membuka file di Windows Notepad. Jika semuanya muncul pada satu baris, maka file itu disimpan dengan ujung garis Linux.
Linux:
Jika Anda mengalami masalah dengan file yang bekerja di lingkungan Linux, buka file dalam editor seperti Emacs atau nano . Jika Anda melihat karakter yang tidak dapat dicetak, maka file tersebut disimpan dengan ujung jalur Windows.
sumber
Alasan lain yang mungkin - beberapa contoh klien Git berjalan pada saat yang sama . Misalnya, "git shell" + "GitHub Desktop", dll.
Ini terjadi pada saya. Saya menggunakan "GitHub Desktop" sebagai klien utama, dan mengabaikan beberapa pengaturan .gitignore baru: komit setelah komit:
Alasan : editor Visual Studio Code sedang berjalan di latar belakang dengan repositori terbuka yang sama. Visual Studio Code memiliki kontrol Git bawaan, dan ini menyebabkan beberapa konflik.
Solusi : periksa ulang beberapa klien Git tersembunyi dan gunakan hanya satu klien Git sekaligus, terutama saat membersihkan cache Git.
sumber
Sudah ada beberapa jawaban bagus, tapi situasiku membosankan. Saya telah mengedit sumber perangkat lunak PLM (manajemen siklus hidup produk) yang diinstal pada Win10 dan sesudahnya memutuskan, "Saya mungkin seharusnya membuat ini repo git."
Jadi, opsi cache tidak akan bekerja untuk saya, secara langsung. Posting untuk orang lain yang mungkin telah menambahkan kontrol sumber SETELAH melakukan banyak pekerjaan awal DAN
.gitignore
tidak berfungsi TETAPI, Anda mungkin takut kehilangan banyak pekerjaan jadigit rm --cached
bukan untuk Anda.PENTING: Ini benar-benar karena saya menambahkan git terlalu terlambat ke "proyek" yang terlalu besar dan sepertinya mengabaikan .gitignore saya. Saya TIDAK pernah melakukan, pernah. Saya bisa pergi dengan ini :)
Pertama, saya baru saja melakukannya:
Kemudian, saya harus memiliki gambar perubahan saya. Sekali lagi, ini adalah produk instal yang telah saya ubah. Terlambat untuk komit pertama dari cabang master murni. Jadi, saya perlu daftar apa yang saya ubah sejak saya menginstal program dengan menambahkan
> changed.log
salah satu dari berikut ini:PowerShell
Pesta
Sekarang, saya memiliki daftar saya tentang apa yang saya ubah dalam sepuluh hari terakhir (mari jangan masuk ke praktik terbaik di sini selain untuk mengatakan, ya, saya melakukan ini pada diri saya sendiri).
Untuk awal yang baru, sekarang:
Saya harus membandingkan daftar yang diubah dengan .gitignore saya yang sedang tumbuh, berjalan
git status
ketika saya memperbaikinya, tetapi suntingan saya di .gitignore dibaca saat saya mulai.Akhirnya, saya sudah daftar perubahan yang diinginkan! Dalam kasus saya ini adalah boilerplate - beberapa tema bekerja bersama dengan beberapa konfigurasi xml khusus untuk menjalankan sistem dev terhadap perangkat lunak ini yang ingin saya masukkan dalam repo untuk pengembang lain untuk meraih dan berkontribusi pada ... Ini akan menjadi cabang utama kami, jadi melakukan, mendorong, dan, akhirnya CABANG untuk pekerjaan baru!
sumber
Hapus saja folder atau file, yang sebelumnya dilakukan di Git, dengan perintah berikut. Maka file gitignore akan mencerminkan file yang benar.
sumber
Satu hal rumit yang tidak dicakup oleh jawaban lain di sini adalah bahwa file .gitignore tidak akan berfungsi jika Anda memiliki komentar sebaris, seperti ini:
Jadi, jika Anda memiliki komentar seperti itu, ubahlah seperti ini:
sumber
Ini juga kemungkinan Anda mengedit
.gitignore
file dengansudo
perintah. Saya mengalami masalah yang sama dan ketika menjalankan perintah:,git status
saya masih bisa melihat file "harus diabaikan".Setelah mengedit dengan
nano .gitignore
bukannyasudo nano .gitignore
, saya bisa melihat refleksi yang benar.sumber
Saya telah membuat .gitignore menggunakan
echo "..." > .gitignore
di PowerShell di Windows, karena itu tidak membiarkan saya membuatnya di Windows Explorer.Masalah dalam kasus saya adalah penyandian file yang dibuat, dan masalahnya diselesaikan setelah saya mengubahnya ke ANSI.
sumber
Saya juga punya masalah yang sama di Ubuntu, saya buat
.gitignore
dari terminal dan itu berfungsi untuk sayatouch .gitignore
sumber
Milik saya tidak berfungsi karena saya telah secara literal membuat dokumen teks bernama .gitignore
Sebagai gantinya, buat dokumen teks, buka di Notepad ++ lalu simpan sebagai .gitignore
Pastikan untuk memilih Semua jenis (*. *) Dari dropdown saat Anda menyimpannya.
Atau di gitbash, cukup gunakan
touch .gitignore
sumber
Jika Anda pengguna Notepad ++ , coba lakukan hal berikut:
Buka file .gitignore Anda menggunakan Notepad ++ dan lakukan:
Edit Menu → Konversi EOL → Format Windows → Simpan .
Coba gunakan
git status
lagi dan lihat apakah itu cocok untuk Anda.Saya telah memposting jawaban untuk pertanyaan serupa di sini .
sumber
Bagi saya itu adalah masalah lain. File .gitignore saya diatur untuk mengabaikan segalanya kecuali hal-hal yang saya katakan tidak diabaikan. Seperti itu:
Sekarang ini jelas berarti bahwa saya juga memberitahu Git untuk mengabaikan file .gitignore itu sendiri. Yang tidak menjadi masalah selama saya tidak melacak file .gitignore. Tetapi pada beberapa titik saya melakukan file .gitignore itu sendiri. Ini kemudian menyebabkan file .gitignore diabaikan dengan benar.
Jadi menambahkan satu baris lagi memperbaikinya:
sumber
Masalah saya adalah saya menulis file untuk diabaikan dengan tanda kutip "" pemisahan bukan dengan slash /.
Ini tidak berhasil dan diabaikan oleh git:
Ini bekerja dengan baik:
Saya juga memeriksa penyandian file saya di windows dengan Notepad ++. Pengkodean diatur ke UTF-8.
sumber