1

更新:根据我下面问题中的链接,当您在分支更改期间看到它时,“M”似乎意味着合并,但修改为git status“当我们切换到主分支时,工作目录被认为是“脏”由于 README 文件尚未添加到索引并提交。因此,git 将尝试将 README 的内容从 test 分支合并到 master 分支中的 README 文件中:"

原谅我对 git 的无知,但是为什么当我在上游分支中进行更改,然后签出我的 master 分支(没有提交)时,修改后的文件作为 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

M 代表修改后的意思,您的工作目录中有修改后的版本。AKA 您有尚未提交的更改。

当您更改分支时,您未提交的更改会随之而来。如果您想更改分支,但还没有准备好提交它们,您可以使用它们来存储它们,然后使用git stash它们来恢复它们git stash pop

于 2012-05-16T20:18:56.870 回答
1

这取决于您想对更改执行什么操作。

如果你想把它们扔掉,请使用git checkout -f master

如果您想保存它们以供以后使用,git stash则可以清理工作树并git pop随时随地再次应用更改。

如果您希望更改保留在分支中,只需git commit更改之前的git checkout master.

于 2012-05-16T20:33:01.697 回答