2011-07-03 41 views
241

我使用Git進行Xcode 4項目版本控制。我已經明確地添加ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate.gitignore,但Git它不會忽略它。任何想法爲何如此?不能忽略UserInterfaceState.xcuserstate

回答

525

Git可能已經在跟蹤文件。

gitignore docs

要停止跟蹤當前跟蹤的文件,使用git的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將增加已被修改或刪除的所有文件。

一旦你從git中刪除文件,它會尊重你的.gitignore

+0

,妥善的工作與xCode4項目文件: – meddlesome

+1

我有這個問題,但是當我嘗試刪除xcuserstate文件它說'沒有匹配任何文件'。這是怎麼回事? –

+0

我與@RobCaraway有同樣的問題 – MaxGabriel

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 

工作非常漂亮,我:)

41

如果該忽略的文件保持顯示未跟蹤列表,你可以使用git的清潔-f -d 以明確的事情了。

  1. 的git RM --cached YourProjectFolderName .xcodeproj/project.xcworkspace/xcuserdata/yourUserName .xcuserdatad/UserInterfaceState.xcuserstate

  2. git的承諾-m「中刪除文件不應該被追蹤「

  3. git clean -f -d

+0

github現在爲您提供了一個默認的.gitignore文件,其中包含此文件,但您仍然需要經過您的步驟。有點煩人 – cspam

+2

謝謝男人,git clean -f -d剛刪除。 xcodeproj和其他文件從我的項目... –

9

只是 「git clean -f -d」 爲我工作!

15

有一個朋友告訴我這個驚人的網站https://www.gitignore.io/。輸入您選擇的IDE或其他選項,它將自動生成包含有用忽略的gitignore文件,其中一個爲xcuserstate。您可以在下載之前預覽gitignore文件。

+0

真錢在這裏 – Ronaldoh1

14

如果文件一直顯示了在這幹嘛提到的一切後,請確保此複選框在Xcode中設置爲未選中:

enter image description here

11

所有的答案是偉大的,但這裏是一個將刪除每個用戶如果您在不同的Mac(家庭和辦公室)

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

工作的Xcode 8.3.3我只是檢查ŧ裏德上面的代碼並觀察,現在在這個casewe必須改變的命令喜歡這個

首先你可以通過使用

touch .gitignore 

之後創建的.gitignore文件可以刪除所有的用戶接口文件通過使用這個命令並使用這個命令它會尊重你的.gitignore文件。

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

這裏有一些演示,如果你使用的GitHub &走捷徑的基本思路是相同的。

1.這樣

enter image description here

2.打開端子糊料以下命令終端後跟一個空格,然後粘貼簡單地像這樣

的.xcuserstate文件的路徑

git rm --cached enter image description here

3.確保你有正確的git的忽略,然後提交代碼:)

enter image description here