26

マスターブランチをチェックアウトしようとしたところ、次のことに遭遇しました。

error: Untracked working tree file 'app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate' would be overwritten by merge. 

そこで、次のコマンドを使用して、このファイルをgitから削除しようとしました(.gitignoreに式を追加してキャッチしました)。

git rm --cached app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate

そして得た:

fatal: pathspec 'app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate' did not match any files 

だから、少し途方に暮れています。私の理解では、作業ファイルはここでは問題ではありません。ただし、完全を期すために、作業ファイルは存在します。例えば

ls -l app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate
-rw-r--r--  1 u  u  56061 24 Sep 12:42 app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate
4

4 に答える 4

18

したがって、解決策は次のとおりです。

ファイルはこの現在のブランチ B で追跡されていません

しかし、チェックアウトしようとしているブランチ A に存在するため、現在の作業ツリー内のファイルが上書きされるという警告が表示されます (追跡していませんが)。

そう:

  1. ブランチ B の既存のディレクトリ内のファイルを削除します (最初は安全のために作業ツリーの外に移動しました)。

  2. 必要なブランチをチェックアウトします-つまり、ブランチA

  3. 次のようなものを使用して、ブランチ A から削除します。

    git rm --cached app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate

注: Fwiw、ブランチ A は私のマスター ブランチでした。ブランチ B は私の開発ブランチでした。

于 2012-09-24T12:46:15.687 に答える