ไม่สามารถเพิกเฉย UserInterfaceState.xcuserstate


301

ฉันใช้ Git สำหรับการควบคุมเวอร์ชันโปรเจ็กต์ Xcode 4 ฉันได้เพิ่มอย่างชัดเจนProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstateไป.gitignoreแต่ Git มันจะไม่สนใจมัน ความคิดใด ๆ ว่าทำไมถึงเป็นเช่นนั้น?

คำตอบ:


669

Git อาจติดตามไฟล์อยู่แล้ว

จากgitignore docs :

เพื่อหยุดการติดตามแฟ้มที่ถูกติดตามในขณะนี้ใช้คอมไพล์ RM --cached

ใช้คำสั่งนี้แทน[project]และ[username]มีข้อมูลของคุณ:

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

หรือคุณสามารถใช้-aตัวเลือกเพื่อgit commitเพิ่มไฟล์ทั้งหมดที่ถูกแก้ไขหรือลบ

.gitignoreเมื่อคุณลบไฟล์จากคอมไพล์ก็จะเคารพคุณ


3
ฉันมีปัญหานี้ แต่เมื่อฉันพยายามลบไฟล์ xcuserstate จะมีข้อความระบุว่า 'ไม่ตรงกับไฟล์ใด ๆ ' เกิดอะไรขึ้น?
Rob Caraway

ฉันมีปัญหาเช่นเดียวกับ @RobCaraway
MaxGabriel

24
สิ่งนี้ช่วยฉันได้: 1) ออกจาก xcode; 2) ไปที่ไดเรกทอรีโครงการและทำ "ls -la" จากแอปเทอร์มินัลเพื่อให้แน่ใจว่าคุณเห็นไฟล์. git และ. gitignore 3) เปลี่ยน "ProjectFolder" ในตัวอย่างด้านบนเป็นชื่อโครงการของคุณ 4) ทำสองคำสั่งคอมไพล์ที่ด้านแสดง; 5) เปิดใช้งาน XCode อีกครั้งและทำคอมมิชชันและตรวจสอบว่าไฟล์ xcuserstate ไม่อยู่ในรายการอีกต่อไป
Brainware

1
ความคิดใดที่จะทำเทียบเท่าใน svn? ฉันได้รับปัญหาเดียวกันประเด็น svn ไม่ได้เพิกเฉยต่อไฟล์
bpn

ขอบคุณ @Brainware !! ในที่สุดก็ใช้งานได้ขอบคุณคำแนะนำของคุณ ฉันคิดว่าการปิด Xcode ล่วงหน้านั้นสำคัญมาก
Jay Versluis

52

ในกรณีที่ไฟล์ที่ถูกเพิกเฉยปรากฏขึ้นในรายการที่ไม่ได้ติดตามคุณอาจใช้git clean -f -d เพื่อล้างข้อมูล

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. คำเตือนลองครั้งแรกgit clean -f -d --dry-runมิฉะนั้นคุณอาจสูญเสียการเปลี่ยนแปลงที่ไม่ได้รับการยอมรับ

แล้ว: git clean -f -d


ตอนนี้ github ให้ไฟล์. gitignore เริ่มต้นที่รวมไฟล์นี้ไว้กับคนอื่น แต่คุณยังต้องทำตามขั้นตอน น่ารำคาญ
cspam

3
ขอบคุณผู้ชาย git clean -f -d เพิ่งถูกลบ xcodeproj และไฟล์อื่น ๆ จากโครงการของฉัน ...
เจเรมี Luisetti

1
ขอแนะนำอย่างยิ่งให้ใช้ธง - แห้งวิ่งก่อนที่จะทำความสะอาดคอมไพล์เช่นgit clean -f -d --dry-run ดูว่าเกิดอะไรขึ้น
zero0cool

อะไรgit clean -f -dทำอย่างไร
allenlinli

อย่าใช้ตัวเลือกนี้git clean -f -dหากคุณมีการเปลี่ยนแปลงของไฟล์ที่ไม่มีข้อผูกมัด! ฉันใช้และลบไฟล์ที่สร้างขึ้นใหม่พร้อมเนื้อหาที่สร้างขึ้นแล้ว! :) ดังนั้นก่อนอื่นให้ทำความสะอาด
kalafun

44

คำตอบทั้งหมดดีมาก แต่นี่คือคำตอบเดียวที่จะลบสำหรับผู้ใช้ทุกคนหากคุณทำงานในMac ที่แตกต่างกัน (บ้านและสำนักงาน)

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

20

มีเพื่อนแสดงให้ฉันดูเว็บไซต์ที่น่าตื่นตาตื่นใจนี้https://www.gitignore.io/ ใส่ IDE ของทางเลือกหรือตัวเลือกอื่น ๆ ของคุณโดยอัตโนมัติและจะสร้างไฟล์ประกอบด้วยละเว้นประโยชน์ซึ่งหนึ่งในนั้นคือgitignore xcuserstateคุณสามารถดูตัวอย่างgitignoreไฟล์ก่อนดาวน์โหลด


17

ในกรณีที่ไฟล์ยังคงปรากฏแม้หลังจากทำทุกอย่างที่กล่าวถึงที่นี่ตรวจสอบให้แน่ใจว่าช่องทำเครื่องหมายนี้ในการตั้งค่า Xcode ไม่ถูกตรวจสอบ:

ป้อนคำอธิบายรูปภาพที่นี่



7

ต่อไปนี้เป็นตัวอย่าง & ทางลัดหากคุณใช้ GitHub แนวคิดพื้นฐานก็เหมือนกัน

1. เปิดเทอร์มินัลเช่นนี้

ป้อนคำอธิบายรูปภาพที่นี่

2. วางคำสั่งด้านล่างเพื่อเทอร์มินัลตามด้วยช่องว่างแล้ววางพา ธ ของไฟล์. xcuserstate อย่างนี้

git rm --cached ป้อนคำอธิบายรูปภาพที่นี่

3. ตรวจสอบให้แน่ใจว่าคุณมีการละเว้น git ที่ถูกต้องแล้วยอมรับรหัส :)

ป้อนคำอธิบายรูปภาพที่นี่


4

นี่คือคำอธิบายที่ดีมากเกี่ยวกับวิธีลบไฟล์ที่เป็นปัญหาซ้ำจากประวัติ git ของคุณ: http://help.github.com/remove-sensitive-data/

มีประโยชน์มากเพราะเครื่องมืออื่นมักจะ 'แฮงค์' ในขณะที่พยายามแสดงความแตกต่างของไฟล์ขนาดใหญ่ที่ไม่ควรถูกตรวจสอบตั้งแต่แรก ...

นี่คือสิ่งที่คุณสามารถทำได้ (สั้น ๆ ) เพื่อกำจัดสิ่งที่ใหญ่ที่สุด:

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

ทำงานได้ดีมากสำหรับฉัน :)


2

สำหรับฉันไม่มีอะไรทำงาน แต่สิ่งนี้

เพิ่มบรรทัดนี้ใน gitignore ของคุณ

*.xcuserdata

1

มันใช้งานได้สำหรับฉัน

  1. เปิดโฟลเดอร์ที่มีไฟล์โครงการproject.xcworkspaceจากเทอร์มินัล

  2. เขียนคำสั่งนี้: git rm --cached *xcuserstate

จะเป็นการลบไฟล์


0

สำหรับ xcode 8.3.3 ฉันเพิ่งตรวจสอบลองโค้ดข้างต้นและสังเกตว่าตอนนี้ใน casewe นี้ต้องเปลี่ยนคำสั่งเป็นแบบนี้

ก่อนอื่นคุณสามารถสร้างไฟล์. gitignore โดยใช้

 touch .gitignore

หลังจากนั้นคุณสามารถลบไฟล์ userInterface ทั้งหมดโดยใช้คำสั่งนี้และโดยใช้คำสั่งนี้มันจะเคารพไฟล์. gitignore ของคุณ

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

-1

ฉันคิดว่ามันคงจะดีกว่าถ้าเขียนแบบนี้

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.