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

时间:2015-08-13 12:03:58

标签: git git-branch

我创建了一个简单的存储库。 如果我从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'。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我从Git-Mailing-Listhere.

得到了答案

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