错误: 分支'yourname'与已删除的远程分支未完全合并

5
无法删除已合并并从GitHub中删除的本地分支。
$ git branch  -d startapp
warning: not deleting branch 'startapp' that is not yet merged to
         'refs/remotes/origin/startapp', even though it is merged to HEAD.
error: The branch 'startapp' is not fully merged.
If you are sure you want to delete it, run 'git branch -D startapp'.

$ git branch
* master
  startapp

$ git checkout startapp
Switched to branch 'startapp'
Your branch is ahead of 'origin/startapp' by 65 commits.
  (use "git push" to publish your local commits)

$ git pull
Your configuration specifies to merge with the ref 'startapp'
from the remote, but no such ref was fetched.

该分支已经在GitHub上合并后被删除。它也被完全合并到主分支中。

$ git log --graph --left-right --cherry-pick --oneline master...startapp
$
$ git log --graph --left-right --oneline master...startapp
$

为什么抱怨?
2个回答

7

来自man git-branch

-d, --delete
   Delete a branch. The branch must be fully merged in its upstream
   branch, or in HEAD if no upstream was set with --track or
   --set-upstream.

您的分支尚未完全合并到设置的上游分支(现在无法进行合并,因为该上游分支已被删除)。

这是一个合理的安全检查:您需要三思而后再删除一个具有未推送到其源的提交的分支。如果您知道一切都很好,那么请按照诊断建议操作:

If you are sure you want to delete it, run 'git branch -D startapp'. 

2
在合并之前,分支必须完全合并到上游主分支,并且本地要跟踪主分支 - 这应该足够了。 - anatoly techtonik

2
如果分支已经完全合并到主分支,只需切换到主分支然后执行以下操作:
git branch -D <your-fully-merged-branch>

Git有点不准确,因为你收到的信息实际上是一个警告,而不是一个错误。

在你的特定情况下,当你从合并的分支pull时,没有得到任何ref是正常的。继续运行-D,应该就没有问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接