web-dev-qa-db-ja.com

UserInterfaceState.xcuserstateを無視できません

Xcode 4プロジェクトのバージョン管理にGitを使用しています。 ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstateを明示的に.gitignoreに追加しましたが、Gitはそれを無視しません。これがなぜそうなのでしょうか?

271
GarlicFries

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"

または、 -agit commitオプションを使用して、変更または削除されたすべてのファイルを追加できます。

Gitからファイルを削除すると、.gitignoreが尊重されます。

604
matt

無視されたファイルが追跡されていないリストに表示され続ける場合、git clean -f -dを使用してクリアできます物事アップ。

  1. git rm --cached YourProjectFolderName。xcodeproj/project.xcworkspace/xcuserdata/yourUserName。xcuserdatad/UserInterfaceState.xcuserstate

  2. git commit -m「追跡すべきではないファイルを削除しました」

  3. git clean -f -d

49
Xing

すべての回答は素晴らしいですが、ここではすべてのユーザーで削除するものがあります異なるMac(自宅とオフィス)

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

友人にこの素晴らしいサイトを見せてもらいました https://www.gitignore.io/ 。選択したIDEまたはその他のオプションを入力すると、有用な無視で構成されるgitignoreファイルが自動的に生成されます。その1つはxcuserstateです。ダウンロードする前にgitignoreファイルをプレビューできます。

16
Josh Valdivieso

ここに記載されているすべての操作を行ってもファイルが表示される場合は、Xcode設定のこのチェックボックスがオフになっていることを確認してください。

enter image description here

15
Lukas Kalinski

「git clean -f -d」だけでうまくいきました!

12
rilar

以下は、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

私にとってはとてもうまくいった:)

4
Zoran Simic

私にとっては何も機能しませんでしたが、これは

この行をgitignoreに追加してください

*.xcuserdata
2
Qadir Hussain

これは私のために働く

  1. ターミナルからプロジェクトファイルproject.xcworkspaceを含むフォルダーを開きます。

  2. 次のコマンドを書いてください:git rm --cached *xcuserstate

これにより、ファイルが削除されます。

1

GitHubを使用する場合のデモとショートカットは次のとおりです。基本的な考え方は同じです。

1。このようなターミナルを開きます

enter image description here

2。以下のコマンドを端末に貼り付けてからスペースを入力し、.xcuserstateファイルのパスを次のように貼り付けます

git rm --cachedenter image description here

3。正しいgit ignoreがあることを確認してから、コードをコミットしてください:)

enter image description here

1
Fangming

Xcode 8.3.3の場合、上記のコードを試してみたところ、この場合、コマンドを次のように変更する必要があります。

最初に、次を使用して.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"
0
Sachin Nautiyal