1. ホーム
  2. git

[解決済み] エラーが発生しました。以下のファイルに対するローカルの変更は、チェックアウトによって上書きされます。

2022-03-07 08:27:17

質問

この質問は、次のようなものです。 これ しかし、より具体的です。

私は2つのブランチを持つプロジェクトを持っています。 stagingbeta . 私は staging を使用します。 master ブランチでバグフィックスを行います。つまり、ステージングで作業しているときにエラーが発生したら、それを master ブランチを作成します。

git checkout master

を行い、その内容を

git add fileToAdd
git commit -m "bug fixed"

そして、両方のブランチにマージします。

git checkout staging
git merge master
git checkout beta
git merge beta

そして、作業ツリー上に他のファイルがあっても問題ありません。

でも、今は に変更しようとすると master ブランチでは、次のようなエラーが発生します。 :

error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting

ステージング・エリアからファイルを削除したほうがいいと思ったのです。

git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php

でも、同じエラーが出るんです。もし私が git status となります。 No changes to commit

どのように解決するのですか?

このエラーは、あるファイルを変更したときに、切り替え先のブランチにそのファイルに対する変更(最新のマージポイントから)もある場合に表示されます。

私が考えるに、あなたの選択肢は - コミットし、このコミットを修正して余分な変更を加える(git ではコミットを修正することができますが、それが push または - stashを使用します。

git stash save your-file-name
git checkout master
# do whatever you had to do with master
git checkout staging
git stash pop

git stash save は、あなたの変更を含む stash を作成しますが、これはコミットやブランチにさえも関連付けられていません。 git stash pop は、最新の stash エントリを現在のブランチに適用し、保存した変更を復元して stash から削除します。