1

更新:以下の私の質問のリンクによると、「M」は、ブランチの変更中に表示されるとマージされたことを意味するようですが、次のように変更されましたgit status: 「マスターブランチに切り替えると、作業ディレクトリは「ダーティ」と見なされますREADME ファイルがインデックスに追加されておらず、コミットされていないためです。その結果、git は、テスト ブランチの README の内容をマスター ブランチの README ファイルにマージしようとします。"

私の git 無知を許してください。しかし、アップストリーム ブランチで変更を加えてから、(コミットせずに) マスター ブランチをチェックアウトすると、変更されたファイルが Merge として現在のブランチに続くのはなぜですか? マージするように指示したときにのみ、git がマージされると思いました。編集内容が別のブランチに反映されることを常に望んでいるわけではないので、マージする前に git に確認するように指示する方法はありますか?

iow: 現在のブランチでコミットされていない編集で誤って別のブランチに切り替えた場合、別のブランチを台無しにしないように git に指示するにはどうすればよいですか?

[on branch:foo]
$ echo test >> main.c

[on branch:foo]
$ cat main.c 
#include <stdio.h>

int main void (int argc, char **argv)
{
   printf ("Hello world!\n");
   return (0);
}
test

[on branch:foo]
$ git checkout master
M       main.c
Switched to branch 'master'

[on branch:master]
$ cat main.c 
#include <stdio.h>

int main void (int argc, char **argv)
{
   printf ("Hello world!\n");
   return (0);
}
test

[on branch:master]
$   
4

2 に答える 2

1

それは、変更で何をしたいかによって異なります。

それらを捨てたい場合は、使用してくださいgit checkout -f master

後でそれらを保存したい場合はgit stash、作業ツリーを消去し、git popいつでもどこでも変更を再度適用できます。

git commit変更をブランチに残したい場合は、git checkout master.

于 2012-05-16T20:33:01.697 に答える
1

M は変更された意味を表し、作業ディレクトリに変更されたバージョンがあります。AKA まだコミットしていない変更があります。

ブランチを変更すると、コミットされていない変更が引き継がれます。ブランチを変更したいが、コミットする準備ができていない場合は、使用してそれらを隠しgit stash、後で使用して復元することができますgit stash pop

于 2012-05-16T20:18:56.870 に答える