0

我经常git add worktree wtname用来创建单独的分支。当我将分支上的更改合并wtname到 master 时,我希望不git branch --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'.

为什么会这样?

4

2 回答 2

2

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

$ 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
于 2020-12-19T05:59:54.423 回答
0

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

这在我的嫌疑人名单中名列前茅。当您让git worktree add默认创建分支时,它不会跟踪任何内容。当你git branch -d是一个分支时,如果它不跟踪任何东西,它的安全检查就是针对你当前的结帐。

于 2020-12-19T05:59:02.427 回答