3

私はブランチfeature/branch1にいます。git statusファイルにある 2 つのファイルをリストしてください.gitignore。ブランチにチェックアウトしようとするとdevelop、git によって次のメッセージが表示されます。

error: Your local changes to the following files would be overwritten by checkout:
    XXXXXXX.xcworkspace/xcuserdata/XXXX.xcuserdatad/UserInterfaceState.xcuserstate
Please, commit your changes or stash them before you can switch branches.
Aborting

次に、これらのファイルがファイルにリストされているにもかかわらず、これらのファイルを追加しようとしたため、次の.gitignoreメッセージが表示されました。

The following paths are ignored by one of your .gitignore files:
XXXXXXX.xcworkspace
Use -f if you really want to add them.
fatal: no files added

git がこれらのファイルを追加するように求めたのはなぜですか? developブランチで無視されないためです。そして、そのような状況に対処するための最良の選択肢は何ですか? 事前にサンクス。

4

1 に答える 1

2

問題は、ファイルが git によってバージョン管理されていないにもかかわらず、ローカル ディレクトリにファイルがあることです。そして git checkout は、バージョン管理されたこれらのファイルを取り込もうとしています。Git は、ファイルを上書きしようとしていると言っていますが、バージョン管理されていないため、2 つの選択肢があります。

  1. ローカル リポジトリからファイルを削除し、チェックアウトでファイルを設定します。
  2. 無視されたファイルを git リポジトリに追加してバージョン管理します。( git add -f <ignored files>)

リポジトリ ディレクトリ内の無視されたファイルをすべて表示するには、次のコマンドを実行します。

git status --ignored

これにより、無視されたすべてのファイルが一覧表示されます。ここから、実行する前にそれらを移動、削除、またはバージョン管理するかどうかを決定できますgit checkout <branch>

このブランチをチェックアウトした後、チェックアウトしようとしているブランチから入ってくる無視されたファイルは、実際には git リポジトリにコミットされるべきではないことを考慮する必要があるかもしれません。ファイルを削除せずにリポジトリからファイルを削除できます。

git rm --cached <files>
于 2013-03-13T19:33:16.297 に答える