为什么 'git branch -d' 在克隆后表现不同?

Why does 'git branch -d' act differently after clone?

我创建了一个简单的存储库。 如果我从 master 创建一个新分支并提交一些更改并且 然后用

删除它
git branch -d neuerTestBranch

我会得到一个错误:

error: The branch 'neuerTestBranch' is not fully merged.

我喜欢那个错误,它提醒我,我忘了合并。 但是,如果我不删除此分支并将存储库克隆到某处 否则,我不会再收到错误了。当我现在删除分支时,我得到 此消息:

warning: deleting branch 'neuerTestBranch' that has been merged to
'refs/remotes/origin/neuerTestBranch', but not yet merged to HEAD.

并立即删除分支。

为什么 git branch -d 在克隆后的行为不同? 这种行为可能是 Bug 吗? 是否有可能在克隆的存储库中强制执行第一个行为, 也是吗?

我用'git version 2.5.0.windows.1'.

这是因为在克隆中,该分支被视为远程分支;所以 Git 期望它将合并到创建它的存储库中。

尝试删除克隆目录上的分支时出现警告是因为原始存储库可能已被删除。

我从 Git-Mailing-List, here.

那里得到了答案

在第一种情况下,删除该分支会丢失提交,因为它们没有存储在其他地方。 在后者中,在远程源中仍然存在所有内容的副本,因此 git 仅显示警告 - 在克隆存储库中删除分支后不会丢失任何数据,它在远程源中仍然可用.