.gitignore ve "Aşağıdaki izlenmemiş çalışma ağacı dosyaları checkout tarafından üzerine yazılacaktır"

Bu yüzden .gitignore dosyama bir klasör ekledim.

Bir kez git status yaptığımda bana şunu söylüyor

# On branch latest
nothing to commit (working directory clean)

Ancak, şubeleri değiştirmeye çalıştığımda aşağıdakileri alıyorum:

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
    public/system/images/9/thumb/red-stripe.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

Bu benim .gitignore dosyam gibi görünüyor:

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

Bu dosyaları silmeden şubeleri değiştirebilmek için bunu nasıl çalıştırabilirim?

Bir değişiklik yaparsam, bu dosyaları etkiler mi? Başka bir deyişle, daha sonra bu dala geri dönersem, her şey en son işlediğim kadar mükemmel olur mu?

Bu dosyaları kaybetmek istemiyorum, sadece takip edilmelerini istemiyorum.

UYARI: izlenmemiş dosyaları silecektir, bu nedenle sorulan soruya harika bir cevap değildir.

Ben de bu mesajı aldım. Benim durumumda, dosyaları saklamak istemedim, bu yüzden bu benim için işe yaradı:

git 2.11 ve daha yeni

git clean  -d  -f .

older git

git clean  -d  -f ""

Eğer git tarafından yok sayılan dosyaları da kaldırmak istiyorsanız, aşağıdaki komutu çalıştırın.

UYARI!!! BU BÜYÜK OLASILIKLA PROJENİZİ YOK EDER, SADECE NE YAPTIĞINIZI %100 BİLİYORSANIZ KULLANIN

git 2.11 ve daha yeni

git clean  -d  -fx .

older git

git clean  -d  -fx ""

http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

  • x` yok sayılan dosyaların yanı sıra git tarafından bilinmeyen dosyaların da kaldırıldığı anlamına gelir.

  • d`, izlenmeyen dosyalara ek olarak izlenmeyen dizinleri de kaldır anlamına gelir.

  • Çalışmaya zorlamak için -f gereklidir.

Yorumlar (28)
Çözüm

Görünüşe göre dosyaların yok sayılmasını istiyorsunuz ancak zaten işlenmişler. .gitignore zaten depoda bulunan dosyalar üzerinde bir etkiye sahip değildir, bu nedenle git rm --cached ile kaldırılmaları gerekir. Önbelleğe alınmış`, çalışma kopyanız üzerinde herhangi bir etkiye sahip olmasını önleyecek ve bir dahaki sefere commit ettiğinizde kaldırılmış olarak işaretlenecektir. Dosyalar depodan kaldırıldıktan sonra .gitignore tekrar eklenmelerini engelleyecektir.

Ancak .gitignore dosyanızla ilgili başka bir sorununuz var, aşırı derecede joker karakter kullanıyorsunuz ve bu da beklediğinizden daha az eşleşmesine neden oluyor. Bunun yerine .gitignore'u değiştirelim ve şunu deneyelim.

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
Yorumlar (7)

Git size dosyalar oluşturmak istediğini söylüyor (public/system/images/9/... vb. adında), ancak bu dizinde zaten Git tarafından izlenmeyen mevcut dosyalarınız var. Belki de bu dosyaları Git deposuna başka biri eklemiştir ve siz bu dala ilk kez geçiş yapıyorsunuzdur?

Muhtemelen bu dosyaların `develop' dalınızda bulunup mevcut dalınızda bulunmamasının bir nedeni vardır. Bunun nedenini ortak çalışanlarınıza sormanız gerekebilir.

*Bu dosyaları silmeden şubeleri değiştirebilmem için bunu nasıl çalıştırabilirim?

Dosyaları bir şekilde ortadan kaldırmadan bunu yapamazsınız. Şimdilik public adını my_public olarak değiştirebilirsiniz.

*Eğer daha sonra bu dala geri dönersem, her şey en son yaptığım işleme kadar mükemmel olacak mı?

Değişikliklerinizi commit ederseniz, Git bunları kaybetmez. Eğer değişikliklerinizi işleme koymazsanız, Git yaptığınız işlerin üzerine yazmamak için gerçekten çok uğraşır. Git'in burada ilk durumda (dalları değiştirmeye çalıştığınızda) sizi uyardığı şey budur.

Yorumlar (2)