1

这让我感到惊讶,我想不出这怎么可能。

  1. git checkout -b newbranch.
  2. 提交除Foo.java.
  3. git checkout master(这是我所在的原始分支)给出错误:

    错误:您对以下文件的本地更改将被结帐覆盖:
    Foo.java 请在切换分支之前提交您的更改或存储它们。

但是我已经在master上了。所以我做通常的工作流程:

  1. git stash
  2. git checkout master

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

4

1 回答 1

3

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

于 2013-05-27T15:24:46.430 回答