UserInterfaceState.xcuserstate göz ardı edilemez


301

Git Xcode 4 proje sürüm kontrolü için kullanıyorum. Ben açıkça ekledik ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstateiçin .gitignore, ancak Git onu görmezden olmaz. Bunun neden böyle olduğuna dair bir fikrin var mı?

Yanıtlar:


669

Git muhtemelen dosyayı zaten izliyor.

Gönderen gitignore docs :

Şu anda izlenen bir dosyayı izlemeyi durdurmak için git rm --cached komutunu kullanın .

Bilgilerinizi değiştirerek [project]ve bunlarla [username]birlikte kullanın :

git rm --cached [project].xcodeproj/project.xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
git commit -m "Removed file that shouldn't be tracked"

Alternatif olarak, değiştirilen veya silinen tüm dosyaları ekleyecek -aseçeneği kullanabilirsiniz git commit.

Dosyayı git'ten kaldırdığınızda, dosyalarınıza saygı duyar .gitignore.


3
Bu sorun var ama xcuserstate dosyasını kaldırmaya çalıştığınızda 'herhangi bir dosyayla eşleşmedi' diyor. Neler oluyor?
Rob Caraway

@RobCaraway ile aynı sorunum var
MaxGabriel

24
Bu bana yardımcı oldu: 1) xcode çıkın; 2) proje dizinine gidin ve .git ve .gitignore dosyalarını gördüğünüzden emin olmak için terminal uygulamasından bir "ls -la" yapın; 3) değişim adına yukarıdaki örnekte "ProjectFolder" senin projesi; 4) matın gösterdiği iki git komutunu yapın; 5) XCode'u yeniden başlatın ve bir taahhütte bulunun ve xcuserstate dosyasının artık listelenmediğini doğrulayın.
Brainware

1
Svn eşdeğeri nasıl yapılır hakkında herhangi bir fikir? Ben svn dosyayı görmezden değil aynı sorunu alıyorum
gelmiyor bpn

Teşekkürler @Brainware !! Sonunda öneriniz sayesinde işe yaradı. Bence Xcode'u önceden kapatmak çok önemli.
Jay Versluis

52

Yok sayılan dosyanın izlenmeyen listede görünmeye devam etmesi durumunda, git clean -f -d işleri temizlemek için kullanabilirsiniz .

1.

git rm --cached {YourProjectFolderName}.xcodeproj/project.xcworkspace/xcuserdata/{yourUserName}.xcuserdatad/UserInterfaceState.xcuserstate

2.

git commit -m "Removed file that shouldn't be tracked"

3. UYARI ilk önce deneyin git clean -f -d --dry-run, aksi takdirde değiştirilmemiş değişiklikleri kaybedebilirsiniz.

Sonra: git clean -f -d


github şimdi size bu dosyayı içeren varsayılan bir .gitignore dosyası veriyor ancak yine de adımlarınızı atmanız gerekiyor. can sıkıcı
cspam

3
Teşekkürler erkekler, git clean -f -d sadece silindi. xcodeproj ve projemdeki diğer dosyalar ...
Jeremy Luisetti

1
Git clean'ı çalıştırmadan önce --dry-run bayrağını kullanmanız önemle tavsiye edilir, yani git clean -f -d --dry-run ne olduğunu görmek için
zero0cool

Ne yapar git clean -f -d?
allenlinli 03

git clean -f -dİstenmeyen dosya değişiklikleriniz varsa kullanmayın ! Onu kullandım ve yeni oluşturulmuş dosyalarımı önceden oluşturulmuş içerikle kaldırdım! :) Yani ilk taahhüt ve sonra temiz
Kalafun

44

Tüm Yanıtlar harika, ancak farklı Mac'te (Ev ve ofis) çalışıyorsanız her kullanıcı için kaldırılacak olan

git rm --cache */UserInterfaceState.xcuserstate
git commit -m "Never see you again, UserInterfaceState"

20

Bir arkadaşım bana bu muhteşem siteyi göstermişti https://www.gitignore.io/ . İstediğiniz IDE'yi veya diğer seçenekleri girin, otomatik olarak gitignoreyararlı yok saymalardan oluşan bir dosya oluşturur ; bunlardan biri xcuserstate. İndirmeden gitignoreönce dosyayı önizleyebilirsiniz .


17

Dosyanın burada belirtilen her şeyi yaptıktan sonra bile gösterilmeye devam etmesi durumunda, Xcode ayarlarındaki bu onay kutusunun işaretinin kaldırılmış olduğundan emin olun:

resim açıklamasını buraya girin


14

Sadece "git clean -f -d" benim için çalıştı!


7

GitHub kullanıyorsanız bazı temel demo ve kısayollar, temel fikirler aynı.

1. Terminali şu şekilde açın

resim açıklamasını buraya girin

2. Aşağıdaki komutu terminale ve ardından boşluk bırakarak .xcuserstate dosyasının yolunu aşağıdaki gibi yapıştırın

git rm --cached resim açıklamasını buraya girin

3. Doğru git yoksayma özelliğine sahip olduğunuzdan emin olun ve ardından kodu uygulayın :)

resim açıklamasını buraya girin


4

Söz konusu dosyaların git geçmişinizden özyineli olarak nasıl kaldırılacağına dair çok güzel bir açıklama: http://help.github.com/remove-sensitive-data/

Çok faydalı, çünkü aksi takdirde araçlar, ilk etapta kontrol edilmemesi gereken büyük dosyalardaki farkı göstermeye çalışırken 'askıda kalma' eğilimindedir ...

En büyük şeylerden kurtulmak için yapabilecekleriniz (kısaca):

cd YourProject
git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r YourProject.xcodeproj/project.xcworkspace' HEAD
# see what you want to do with your remote here...
# you can: git push origin master --force
# or you can delete it and push a fresh new one from your cleaned-up local...
rm -rf .git/refs/original
git gc --prune=now
git gc --aggressive --prune=now

Benim için çok güzel çalıştı :)


2

Benim için hiçbir şey işe yaramadı, ama bu

bu satırı gitignore'unuza ekle

*.xcuserdata

1

Bu benim için çalışıyor

  1. project.xcworkspaceTerminalden proje dosyasını içeren klasörü açın .

  2. Bu komutu yazın: git rm --cached *xcuserstate

Bu dosyayı kaldıracaktır.


0

Xcode 8.3.3 için sadece yukarıdaki kodu denedim ve gözlemledim, şimdi bu kasada bunun gibi komutları değiştirmek zorundayım

önce kullanarak .gitignore dosyası oluşturabilirsiniz

 touch .gitignore

bundan sonra bu komutu kullanarak tüm userInterface dosyasını silebilirsiniz ve bu komutu kullanarak .gitignore dosyanıza saygı gösterecektir.

 git rm --cached [project].xcworkspace/xcuserdata/[username].xcuserdatad/UserInterfaceState.xcuserstate
 git commit -m "Removed file that shouldn't be tracked"

-1

Bence böyle yazmak daha iyi olur.

git rm --cache * / /UserInterfaceState.xcuserstate**

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.