1

master ブランチで変更した追跡ファイル (古いバージョンのファイル) があります。マスター ブランチのステータスは、このファイルが変更されていることを示していますが、トピック ブランチのステータスも、このファイルが変更されていることを示しています。

以前、スタッシュを実行せずに、または git-checkout で「-f」を使用せずに他のブランチにチェックアウトすると、「エラー: 「X」にローカルな変更があります。ブランチを切り替えることはできません」というエラーが発生しました。

「stackoverflow.com/questions/1304626/git-switch-branch-and-ignore-any-changes-without-committing」をチェックしましたが、そのエラーは発生せず、ローカルに変更があってもチェックアウトできます。

この混乱を引き起こしている構成の種類はありますか?

4

3 に答える 3

5

コミットしない限り、変更された変更はブランチの一部ではありませんが、作業ディレクトリに適用され、別のブランチをチェックアウトすると、それらの変更が他のブランチにも適用されます (競合がない限り)。

master で行った変更をチェックアウト時に他のブランチに反映させたくない場合は、変更をコミットするか、隠しておきます。

于 2011-11-28T06:05:35.880 に答える
2

切り替え先のブランチは、元のブランチと同じ状態のようです。各ブランチは、コミットのツリー上のポインターです。したがって、2 つのブランチが同じ一連の commit を指している場合、ローカルの変更をチェックインせずにそれらを切り替えることができます。その理由は、実際に変更をコミットするまでは、どのブランチにコミットしたかが git に影響を与えないためです。ただし、変更をコミットすると、一方のブランチには含まれ、もう一方には含まれず、履歴が異なります。

于 2011-11-28T18:00:32.330 に答える
0

試す

git reset --hard HEAD

マスター上

于 2011-11-28T05:32:23.127 に答える