【发布时间】:2012-09-11 19:46:03
【问题描述】:
我需要将两个分支——second 合并到 first 中,然后去掉 second。这是我所做的:
-
git cloned 项目以获得新副本 -
git checkout --track origin/second,做了一些修改,并提交了 -
git checkout --track origin/first,做了一些修改,并提交了 -
git merge second(git 说“递归合并”) git branch -d second
然后 git 说:
$ git branch -d second
warning: not deleting branch 'second' that is not yet merged to
'refs/remotes/origin/second', even though it is merged to HEAD.
error: The branch 'second' is not fully merged.
If you are sure you want to delete it, run 'git branch -D second'.
为什么会这样?我以前从未在合并后收到此消息。合并工作得很好,没有冲突。如何安全地删除second 分支?
【问题讨论】:
-
git checkout second后跟git push origin second让 git 停止抱怨,但我不明白为什么。 -
一个疯狂的猜测,但也许 git 抱怨你在删除之前没有将
second推送到原点?还要确保您没有处于“分离 HEAD”状态 -
@knittl 是的,你似乎是对的,但是为什么 git 会关心我是否推了
second? -
它不希望您对远程分支进行仅本地更改(尽管我自己从未见过该消息)。我将在源代码中挖掘以找到其背后的逻辑。
-
在这种情况下,它知道
second是origin/second的跟踪分支,因此它想知道对second所做的更改已被推送到origin。如果它不是一个跟踪分支,我认为它不会抱怨这一点。在这一点上,second已在本地合并到first对git来说似乎并不重要,尽管您似乎可以提出这样的情况,因为它至少已合并到其他东西中,删除分支应该是可以接受的。