私はgitブランチで作業していて、変更をコミットする準備ができたので、役に立つコミットメッセージでコミットしました。その後、うっかりして、保存する価値のないコードに小さな変更を加えてしまいました。今、ブランチを変更したいのですが、gitは私に、
エラー: 「X」にローカル変更があるため、ブランチを切り替えることができません。
コミットせずにブランチを変更できますか? できる場合、どのように設定すればよいですか? できない場合、この問題を解決するにはどうすればよいでしょうか? コミットせずに小さな変更を無視し、ブランチのみを変更したいです。
ベストアンサー1
ブランチを変更するにはクリーンな状態が必要です。ブランチのチェックアウトは、「ダーティファイル」に影響を与えない場合にのみ許可されます(チャールズ・ベイリーコメント欄にご意見をお寄せください。
それ以外の場合は、次のいずれかを実行する必要があります。
- 隠し場所現在の変更または
reset --hard HEAD
(それらの小さな変更を失っても構わない場合)またはcheckout -f
(ブランチを切り替えるときに、インデックスや作業ツリーが HEAD と異なっていても続行します。これは、ローカルの変更を破棄するために使用されます。)
あるいは、最近では:
- Git 2.23の場合(2019年8月)そして新しいコマンド
git switch
:
git switch -f <branch-name>
(-f
は の略で--force
、 は の別名です--discard-changes
)
インデックスまたは作業ツリーが HEAD と異なる場合でも続行します。
インデックスと作業ツリーの両方が、切り替え先に合わせて復元されます。
git switch -m <branch-name>
これは、現在のブランチ、作業ツリーの内容、および新しいブランチの間で 3 方向のマージをトリガーするとは異なります。この方法では、進行中の作業が失われることはありません。