UserInterfaceState.xcuserstateを無視できません


301

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

回答:


669

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


3
私はこの問題を抱えていますが、xcuserstateファイルを削除しようとすると、「どのファイルとも一致しませんでした」と表示されます。どうしたの?
Rob Caraway

@RobCarawayと同じ問題があります
MaxGabriel

24
これは私を助けました:1)xcodeを終了します。2)プロジェクトディレクトリに移動し、ターミナルアプリから「ls -la」を実行して、.gitファイルと.gitignoreファイルが表示されていることを確認します。3)上記の例の「ProjectFolder」をプロジェクトの名前に変更します。4)mattが示す2つのgitコマンドを実行します。5)XCodeを再起動し、コミットを実行して、xcuserstateファイルがリストに表示されていないことを確認します。
ブレインウェア2013

1
svnで同等のことをする方法はありますか?同じ問題が発生しますが、svnはファイルを無視していません
bpn

@Brainwareありがとうございます!! それはあなたの提案のおかげでようやく機能しました。Xcodeを事前に閉じることは非常に重要だと思います。
Jay Versluis、2014

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 2015

3
おかげで、git clean -f -dが削除されました。xcodeprojおよび私のプロジェクトからの他のファイル...
Jeremy Luisetti '

1
git cleanを実行する前に--dry-runフラグを使用git clean -f -d --dry-run すること、つまり何が起こるかを確認することを強くお勧めします
zero0cool

何をしgit clean -f -dますか?
アレンリンリ

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、便利な無視で構成されるファイルが自動的に生成されますxcuserstategitignoreダウンロードする前にファイルをプレビューできます。


17

ここで説明したすべてのことを行ってもファイルが引き続き表示される場合は、Xcode設定のこのチェックボックスがオフになっていることを確認してください。

ここに画像の説明を入力してください


14

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


7

GitHubを使用する場合のデモとショートカットをいくつか紹介します。基本的な考え方は同じです。

1.このようにターミナルを開く

ここに画像の説明を入力してください

2.以下のコマンドをターミナルに貼り付け、続けてスペースを入れ、次に.xcuserstateファイルのパスをこのように貼り付けます

git rm --cached ここに画像の説明を入力してください

3.正しいgit ignoreがあることを確認してから、コードをコミットします:)

ここに画像の説明を入力してください


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

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



1

これは私のために働く

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

  2. 次のコマンドを記述します。 git rm --cached *xcuserstate

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


0

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"

-1

このように書いた方がいいと思います。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.