如何在删除工作目录时删除git working tree分支?

周汉成*_*周汉成 6 git

我删除了它的工作目录,因为这个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'  
Run Code Online (Sandbox Code Playgroud)

但是'/ Users/zhouhancheng /编程/ github_own/sketch_worktree/pubsub-sketch_tree'已被删除.

tor*_*rek 10

您正在使用git worktree,所以答案是git worktree文件:

完成链接的工作树后,您只需删除它即可.在资源库中(见"详细信息"下面)最终会被自动删除工作树的管理文件(见gc.worktreePruneExpire混帐配置(1) ),或者可以运行git worktree prune在主或任何链接工作树清理任何过时的管理文件.

(强调我的).如果Git认为它已在辅助工作树中签出,则Git不会让您删除该分支.如果辅助worktree已经删除,但GIT中还没有陷入到这个事实,只是运行git worktree prune告诉 Git的去检查.


Von*_*onC 8

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

使用 Git 2.17+(2018 年第 2 季度)您会更轻松,因为“ git worktree”已经学会了 ' move' 和 ' remove' 子命令。

请参阅Eric Sunshine ( ) 的commit 7f19def (04 Mar 2018 )。 见提交ee6763a提交cc73385提交78d986b提交c64a8d2提交9f792bb提交9c620fc(2018年2月12日),并提交4ddddc1通过(2018年1月24日)Nguy 4 N泰伍2 C维战((由Junio C Hamano合并-- --提交 bd0f794,2018 年 3 月 14 日)sunshineco
pclouds
gitster

worktree remove: 新命令

此命令允许删除工作树。像“移动”一样,您无法删除主工作树或内部包含子模块的工作树。

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


工作树删除:当$GIT_WORK_TREE已经消失时允许它

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

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

如果$GIT_WORK_TREE由于某种原因已经消失,我们应该可以通过删除$GIT_DIR.


Wha*_*ool 7

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

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

git branch main
git branch -D {branch-to-delete}
Run Code Online (Sandbox Code Playgroud)