1

私は地元で働いています。ブランチ「b1」をチェックアウトして、いくつかの作業を行いました。ブランチ「b1」をそのままにしておきたいのですが、マスターに戻って「b1」をチェックアウトする前の状態に戻します。しかし、「git checkout master」を使用してマスターをチェックアウトすると、ブランチで行ったすべての変更は、コミットやマージなしですでにマスターにあります。私は何が間違っているのですか?

4

2 に答える 2

1

もう一度b1チェックアウトする前に、変更をコミットしましたか?master

ブランチを切り替える前に変更をコミットまたは隠さない場合、変更はローカルファイルに残ります。したがって、チェックアウトしたブランチに表示されます。

于 2012-08-27T15:24:38.570 に答える
0

ブランチに加えた変更がb1チェックアウトによって上書きされる場合、変更masterを隠したり、インデックスに変更をコミットしたりしない限り、git はチェックアウトを実行できません。次のようなエラーが表示されます

error: Your local changes to the following files would be overwritten by checkout:
    /src/path/to/conflicting/file.java
Please, commit your changes or stash them before you can switch branches.

チェックアウトが滞りなく (何もコミットせずに) 完了した場合、2 つのブランチ間に競合はなく、git は作業ツリーをそのまま保持します。

あなたがする必要があるのは、チェックアウトb1して、行ったすべての変更をコミットし、ローカライズしてからb1checkoutすることmasterです。master変更はブランチにないはずです。

于 2012-08-27T15:27:33.187 に答える