git是'更改分支时M'erging未提交的编辑?

时间:2012-05-16 20:11:23

标签: git

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

原谅我的git无知,但为什么当我在上游分支中进行更改,然后检出我的主分支(没有提交),修改后的文件follows the current branch as a 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]
$   

2 个答案:

答案 0 :(得分:1)

M代表修改后的含义,您的工作目录中有修改后的版本。又名您有尚未提交的更改。

当您更换分支时,您的未提交更改会继续进行。如果您想更改分支,但尚未准备好提交分支,可以使用git stash存储它们,然后使用git stash pop

恢复它们

答案 1 :(得分:1)

这取决于您对更改的要求。

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

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

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