Tidak dapat mengabaikan UserInterfaceState.xcuserstate

301

Saya menggunakan Git untuk kontrol versi proyek Xcode 4. Aku sudah secara eksplisit menambahkan ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstateke .gitignore, tetapi Git tidak akan mengabaikannya. Adakah ide mengapa demikian?

GarlicFries
sumber

Jawaban:

669

Git mungkin sudah melacak file.

Dari dokumen gitignore :

Untuk berhenti melacak file yang saat ini dilacak, gunakan git rm --cached .

Gunakan ini, ganti [project]dan [username]dengan info Anda:

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

Atau Anda dapat menggunakan -aopsi git commityang akan menambahkan semua file yang telah dimodifikasi atau dihapus.

Setelah Anda menghapus file dari git, itu akan menghormati Anda .gitignore.

matt
sumber
3
Saya memiliki masalah ini tetapi ketika saya mencoba untuk menghapus file xcuserstate ia mengatakan 'tidak cocok dengan file apa pun'. Apa yang sedang terjadi?
Rob Caraway
Saya memiliki masalah yang sama dengan @RobCaraway
MaxGabriel
24
Ini membantu saya: 1) keluar dari xcode; 2) buka direktori proyek dan lakukan "ls -la" dari aplikasi terminal untuk memastikan Anda melihat file .git dan .gitignore; 3) ubah "ProjectFolder" pada contoh di atas menjadi nama proyek Anda ; 4) lakukan dua perintah git yang ditunjukkan oleh matt; 5) Luncurkan ulang XCode dan lakukan komit serta verifikasi bahwa file xcuserstate tidak lagi terdaftar.
Brainware
1
Adakah yang tahu bagaimana melakukan hal yang sama di svn? Saya mendapatkan masalah yang sama, di mana svn tidak mengabaikan file
bpn
@Brainware terima kasih !! Akhirnya berhasil berkat saran Anda. Saya pikir menutup Xcode sebelumnya sangat penting.
Jay Versluis
52

Jika file yang diabaikan terus muncul dalam daftar yang tidak dilacak, Anda dapat menggunakan git clean -f -d untuk menghapus semuanya.

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. PERINGATAN percobaan pertama git clean -f -d --dry-run, jika tidak, Anda dapat kehilangan perubahan yang tidak dikomit.

Kemudian: git clean -f -d

Xing
sumber
github sekarang memberi Anda file .gitignore default yang menyertakan file ini di antara yang lain, tetapi Anda masih harus melalui langkah-langkah Anda. agak menjengkelkan
cspam
3
Terima kasih kawan, git clean -f -d baru saja dihapus. xcodeproj dan file-file lain dari proyek saya ...
Jeremy Luisetti
1
Sangat disarankan untuk menggunakan flag --dry-run sebelum menjalankan git clean, yaitu git clean -f -d --dry-run untuk melihat apa yang terjadi
zero0cool
Apa yang git clean -f -dharus dilakukan
allenlinli
Jangan gunakan git clean -f -djika Anda memiliki perubahan file yang tidak dikomit! Saya menggunakannya dan menghapus file saya yang baru dibuat dengan konten yang sudah dibuat! :) Jadi, pertama komit dan kemudian bersih
kalafun
44

Semua Jawaban bagus tetapi di sini yang akan dihapus untuk setiap pengguna jika Anda bekerja di Mac yang berbeda (Rumah dan kantor)

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

Seandainya seorang teman menunjukkan kepada saya situs luar biasa ini https://www.gitignore.io/ . Masukkan IDE pilihan Anda atau opsi lain dan itu akan secara otomatis menghasilkan gitignorefile yang terdiri dari pengabaian berguna, salah satunya adalah xcuserstate. Anda dapat melihat pratinjau gitignorefile sebelum mengunduh.

Josh Valdivieso
sumber
17

Jika file terus muncul bahkan setelah melakukan semua yang disebutkan di sini, pastikan bahwa kotak centang ini dalam pengaturan Xcode tidak dicentang:

masukkan deskripsi gambar di sini

Lukas Kalinski
sumber
14

Hanya "git clean -f -d" bekerja untuk saya!

rilar
sumber
7

Berikut ini beberapa demo & jalan pintas jika Anda menggunakan GitHub, ide dasarnya sama.

1. Buka terminal seperti ini

masukkan deskripsi gambar di sini

2. Tempelkan perintah di bawah ini ke terminal diikuti oleh spasi dan kemudian tempel path file .xcuserstate seperti ini

git rm --cached masukkan deskripsi gambar di sini

3. Pastikan Anda memiliki diabaikan git yang benar dan kemudian komit kode :)

masukkan deskripsi gambar di sini

Fangming
sumber
4

Berikut adalah penjelasan yang sangat bagus tentang cara menghapus file yang dimaksud secara rekursif dari riwayat git Anda: http://help.github.com/remove-sensitive-data/

Sangat berguna, karena jika tidak, alat cenderung 'hang' saat mencoba menunjukkan perbedaan pada file besar yang seharusnya tidak diperiksa terlebih dahulu ...

Inilah yang dapat Anda lakukan (singkatnya) untuk menyingkirkan hal-hal terbesar:

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

Bekerja sangat baik untuk saya :)

Zoran Simic
sumber
2

Bagi saya tidak ada yang berhasil, tetapi ini

tambahkan baris ini ke gitignore Anda

*.xcuserdata
Qadir Hussain
sumber
1

Ini bekerja untuk saya

  1. Buka folder yang berisi file proyek project.xcworkspacedari terminal.

  2. Tulis perintah ini: git rm --cached *xcuserstate

Ini akan menghapus file.

Mohammed Ali Khaled
sumber
0

Untuk xcode 8.3.3 Saya baru saja memeriksa mencoba kode di atas dan mengamati bahwa, sekarang dalam kasus ini kami harus mengubah perintah seperti ini

pertama Anda dapat membuat file .gitignore dengan menggunakan

 touch .gitignore

setelah itu Anda dapat menghapus semua file userInterface dengan menggunakan perintah ini dan dengan menggunakan perintah ini akan menghormati file .gitignore Anda.

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

Saya pikir akan lebih baik menulis seperti ini.

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

Hanlei
sumber