git checkout -b,提交一些文件,checkout回到原始分支抱怨有关被覆盖的更改

时间:2013-05-27 14:47:13

标签: git

这令我感到惊讶,我无法想象它是如何可能的。

  1. git checkout -b newbranch
  2. 提交Foo.java以外的一些文件。
  3. git checkout master(这是我原来的分支)给出错误:

      

    错误:结帐后,您对以下文件的本地更改将被覆盖:
      Foo.java   请提交更改或存储更改,然后才能切换分支。

  4.      但我已经掌握了。所以我做了通常的工作流程:

    1. git stash
    2. git checkout master
    3. 它自动合并成功。为什么需要自动合并?为什么需要阻止我的git checkout 离开master而不是回到 master?我试图了解git何时提出这些投诉的逻辑。

1 个答案:

答案 0 :(得分:3)

当你使用git checkout -b它实际上没有消失时,它仍然保持同一个提交。这就是为什么它允许您结账保留所有本地更改。 “返回”主人会更改提交(并实际修改工作树),这就是它会覆盖您的更改的原因。