为什么git不允许我安全删除分支?

时间:2012-09-19 13:28:03

标签: git merge branch

我需要将两个分支 - second合并到first中,然后摆脱second。这是我做的:

  • git clone d项目获取新副本
  • 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 个答案:

答案 0 :(得分:36)

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

我做了:

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

没有任何警告。

答案 1 :(得分:0)

两行

git push -u origin second
git branch -d second

答案 2 :(得分:0)

基本上,本地“ second”分支不与远程“ second”分支同步,并且git不想让您丢失任何工作。

在这种情况下,由于更新已经合并到“ HEAD”中,因此不确定更新是否会丢失。如果将“ HEAD”分支推送到远程,则应该没有问题。但是,如果“ HEAD”出了点问题,您仍然有机会失去工作

最后,这只是一项额外保证,请随时强行删除。

答案 3 :(得分:0)

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

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