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

时间:2017-05-22 09:21:47

标签: 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'  

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

2 个答案:

答案 0 :(得分:9)

您使用的是git worktree,因此答案位于the git worktree documentation

  

完成链接的工作树后,您只需将其删除即可。存储库中的工作树管理文件(参见" DETAILS"下面)最终将自动删除(请参阅git-config(1)中的gc.worktreePruneExpire),或 您可以运行主要或任何链接工作树中的git worktree prune ,以清理任何陈旧的管理文件。

(强调我的)。如果Git认为它已在辅助工作树中签出,那么Git不会让你删除该分支。如果已经删除了辅助工作树,但是Git还没有抓住这个事实,只需运行git worktree prune告诉 Git去检查。

答案 1 :(得分:1)

  

我已删除其工作目录

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

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

  

worktree remove:新命令

     

此命令允许删除工作树。喜欢'移动'你不能   删除主工作树,或内部子模块。

     

删除$GIT_WORK_TREE,未删除文件或任何暂存条目   被认为是宝贵的,因此可以防止默认删除忽视   文件并不珍贵。

  

worktree remove:$GIT_WORK_TREE已经消失时允许

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

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

如果由于某种原因$GIT_WORK_TREE已经消失,我们应该可以   通过删除$GIT_DIR 来完成工作。