当工作目录被删除时,如何删除 git 工作树分支?

问题描述 投票:0回答:5

我已经删除了它的工作目录,因为这个 git 工作树不再有用,然后我

git branch -D pubsub-sketch-tree
在主存储库的目录中。抛出错误:

error: Cannot delete branch 'pubsub-sketch-tree' checked out at '/Users/zhouhancheng/编程/github_own/sketch_worktree/pubsub-sketch_tree'  

但是“/Users/zhouhan Cheng/Smashing/github_own/sketch_worktree/pubsub-sketch_tree”已被删除。

git
5个回答
33
投票

您正在使用

git worktree
,所以答案就在
git worktree
文档
:

使用完链接的工作树后,您只需将其删除即可。存储库中工作树的管理文件(请参阅下面的“详细信息”)最终将被自动删除(请参阅

git-config(1)
中的 gc.worktreePruneExpire),或者 您可以在主目录或任何目录中运行
git worktree prune
链接工作树
以清理任何陈旧的管理文件。

(强调我的)。如果 Git 认为该分支已在辅助工作树中检出,则它不会让您删除该分支。如果辅助工作树已经被删除,但 Git 还没有意识到这一点,只需运行

git worktree prune
告诉 Git 去检查。


14
投票

我已经删除了它的工作目录

您将更轻松地使用 Git 2.17+(2018 年第 2 季度),因为“

git worktree
”已经学会了“
move
”和“
remove
”子命令。

请参阅 Eric Sunshine (sunshineco)

commit 7f19def(2018 年 3 月 4 日)。
请参阅 commit ee6763acommit cc73385commit 78d986bcommit c64a8d2commit 9f792bbcommit 9c620fc(2018 年 2 月 12 日)和 commit 4ddddc1(2018 年 1 月 24 日),作者:Nguyễn Thái Ngọc Duy (
pclouds
)
.
(由 Junio C Hamano --
gitster
--
合并于 commit bd0f794,2018 年 3 月 14 日)

worktree remove
:新命令

此命令允许删除工作树。就像“移动”一样,你不能 删除主工作树,或其中包含子模块的工作树。

对于删除

$GIT_WORK_TREE
,未跟踪的文件或任何暂存的条目都是 被认为是珍贵的,因此默认情况下会阻止删除。被忽略 文件并不珍贵。


worktree 删除:当
$GIT_WORK_TREE
已经消失时允许它

git worktree remove
”基本上由两件事组成

  • 删除
    $GIT_WORK_TREE
  • 删除
    $GIT_DIR
    (即
    $SUPER_GIT_DIR/worktrees/something

如果

$GIT_WORK_TREE
由于某种原因已经消失了,我们应该能够 通过删除
$GIT_DIR
来完成作业。


10
投票

就我而言,这是因为正在进行变基。我切换到我想要删除的分支,然后中止变基,然后我就可以删除它了。

git branch {branch-to-delete}
git rebase --abort 
# or
git merge --abort

git branch main
git branch -D {branch-to-delete}

1
投票

对我来说,解决方案是做

git bisect reset


0
投票

删除文件夹后需要修剪工作树:

git worktree prune

© www.soinside.com 2019 - 2024. All rights reserved.