現在のブランチがダーティで、ブランチを切り替えようとするシナリオは 2 つあります。
変更をコミットするのを忘れました。
その場合、git は、別のブランチに切り替えると変更が失われることを警告します。これは基本的にデフォルトの想定であり、エラー メッセージがそのまま書かれている理由です。
変更は一時的なものであり、とにかく切り替えたい。
その場合、変更を隠してから、切り替え後に再度適用する必要があります。Git は、これがあなたの望むものだとは決して考えません。理由を推測する必要があるとすれば、それはおそらく Linus がこれを頻繁に行わないためです。
git はあなたの心を読むことができないので、あなたが commit するか stash するかを指示するのを待ちます。エラーメッセージでは、gitがあなたの心を読み取ろうとすると、スタッシュではなくコミットしたいと推測するでしょうが、あなたの場合は間違った推測になるでしょう。
追加回答
返信が大幅に遅れて申し訳ありませんが、今日、更新された質問に気づきました。
ローカルの変更については、私の戦略はローカルの変更ブランチを作成することです。次に、マスターの代わりにそこからすべての機能ブランチをフォークします。通常、ローカルの変更はすべての作業ブランチに適用されるため、これは機能します。
ただし、これを行うと、基本的に 2 回リベースする必要があるため、master でのリベースが少し面倒になります。1 回目は local_changes に、次に local_changes からトピック ブランチに。ただし、このためのシェル スクリプトを簡単に作成できます。
# rebase_master.sh
git rebase master local_changes
git rebase local_changes
これのもう 1 つの利点は、環境を再構成する必要がある場合に local_changes を変更すると、すべてのトピック ブランチに変更が反映されることです。
マージして master に戻すには、git rebase master
マージする前にトピック ブランチから local_changes を削除します。