git中的工作树分支即使在合并后也显示为未合并

git中的工作树分支即使在合并后也显示为未合并,git,git-branch,git-worktree,Git,Git Branch,Git Worktree,我经常使用git add worktree wtname创建单独的分支。当我将分支wtname上的更改合并到主分支时,我希望git分支--no merged不应该列出wtname分支。然而,确实如此。更糟糕的是,即使在删除工作树之后: rm -rf wtname git worktree remove wtname 除非强制删除,否则无法删除此分支。在执行上述编写的命令之后,如果运行git branch-d wtname,它将抛出以下错误: error: The branch 'wtname'

我经常使用
git add worktree wtname
创建单独的分支。当我将分支
wtname
上的更改合并到主分支时,我希望
git分支--no merged
不应该列出
wtname
分支。然而,确实如此。更糟糕的是,即使在删除工作树之后:

rm -rf wtname
git worktree remove wtname
除非强制删除,否则无法删除此分支。在执行上述编写的命令之后,如果运行
git branch-d wtname
,它将抛出以下错误:

error: The branch 'wtname' is not fully merged.
If you are sure you want to delete it, run 'git branch -D wtname'.
为什么会这样

当我将分支
wtname
上的更改合并到主节点时

这是我的头号嫌疑犯。当您让git worktree add创建一个分支时,它不会跟踪任何东西。当您
git branch-d
a分支时,如果它没有跟踪任何东西,那么它的安全检查将针对您当前的签出

当我将分支
wtname
上的更改合并到主节点时


这是我的头号嫌疑犯。当您让git worktree add创建一个分支时,它不会跟踪任何东西。当你
git branch-d
一个分支,如果它没有跟踪任何东西,它的安全检查将与你当前的检查相对应。

你没有向我们展示你的真实代码,但是一个反例足以反驳这个假设,所以这里有一个小游戏,我们在工作树中创建一个新分支,在这个分支上工作,并将其合并,然后删除工作树和分支。无论你做了什么与此不同的事情,在不同的程度上,都可能是错误的。也许您创建的工作树不正确?仔细观察我所做的:

$ mkdir git
$ cd git
$ git init

$ echo a > a.txt; git add .; git commit -m'a'
$ echo b > a.txt; git add .; git commit -m'b'

$ git worktree add -b br ../br
$ cd ../br

$ echo c > a.txt; git add .; git commit -m'c'
$ echo d > a.txt; git add .; git commit -m'd'
$ cd ../git

$ echo e > e.txt; git add .; git commit -m'e'
$ git merge br

$ git branch --no-merged # nothing
$ git worktree remove br
$ git branch -d br

您还没有向我们展示您的真实代码,但是一个反例就足以反驳这个假设,因此这里有一个小游戏,我们在工作树中创建一个新分支,处理该分支,然后合并它-然后删除工作树和分支。无论你做了什么与此不同的事情,在不同的程度上,都可能是错误的。也许您创建的工作树不正确?仔细观察我所做的:

$ mkdir git
$ cd git
$ git init

$ echo a > a.txt; git add .; git commit -m'a'
$ echo b > a.txt; git add .; git commit -m'b'

$ git worktree add -b br ../br
$ cd ../br

$ echo c > a.txt; git add .; git commit -m'c'
$ echo d > a.txt; git add .; git commit -m'd'
$ cd ../git

$ echo e > e.txt; git add .; git commit -m'e'
$ git merge br

$ git branch --no-merged # nothing
$ git worktree remove br
$ git branch -d br

你没有展示你是如何进行合并的,但是如果你使用了
git merge--squash
或GitHub PR,很有可能分支从未真正合并过,git的抱怨是完全合理的。(只是重复torek的评论)你能解释一下你是如何将分支合并到master的吗?我没有使用squash。我只是在master上合并:
git merge wtname
我必须指出,只有在我通过添加单独的工作树来创建分支时才会发生这种情况,而不是在普通分支上。“只有在我通过添加单独的工作树来创建分支时才会发生这种情况”是的,但其他人根本不会发生这种情况。你能提供一系列命令让问题得以重现吗?你没有展示你是如何进行合并的,但是如果你使用了
git merge--squash
或GitHub PR,很有可能分支从未真正合并过,git的抱怨是完全合理的。(重复torek的评论)你能解释一下你是怎么把你的分支合并成master的吗?我没有用壁球。我只是在master上合并:
git merge wtname
我必须指出,只有在我通过添加单独的工作树来创建分支时才会发生这种情况,而不是在普通分支上。“只有在我通过添加单独的工作树来创建分支时才会发生这种情况”是的,但其他人根本不会发生这种情况。您能否提供一系列命令,允许重现问题?