35

我需要合并两个分支 -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分支?

4

3 回答 3

52

根据我的实验以及@knittl 和@twalberg 的评论,git 似乎只是希望我second在删除之前将我的更改推送到分支。

我做了:

$ git checkout second
$ git push origin second
$ git checkout first
$ git branch -d second

它在没有警告的情况下工作。

于 2012-09-20T20:49:49.453 回答
0

基本上,本地“第二”分支与远程“第二”分支不同步,git 不希望你丢失任何工作。

在这种情况下,更新不一定会丢失,因为它已经合并到“HEAD”。如果“HEAD”分支被推送到远程,应该没有问题。但是,如果“HEAD”有问题,您仍然有可能丢失工作

总而言之,它只是一个额外的保证,随意强行删除。

于 2020-05-28T05:52:25.130 回答
0

我认为这实际上发生在您合并远程分支(即通过 a Pull Request)并删除远程分支时。

在我的实验中,删除远程分支并-d在本地使用FIRST是解决方案。

于 2020-12-09T00:54:41.557 回答