为什么git worktree add会创建一个分支,我可以删除吗?

Tor*_*erg 17 git git-worktree

我曾经git worktree add创建过一个新的工作树.我注意到它在repo中创建了一个与工作树同名的新分支.这个分支是什么?

我已在第二个工作树中检出了另一个已存在的分支.我可以自由删除git worktree add创建的分支吗?

vah*_*eds 20

当其他人回答这个问题时,我把命令删除folder,删除worktree和删除branch:

首先,列出你所有的工作都要仔细检查......

$ git worktree list
Run Code Online (Sandbox Code Playgroud)

然后,删除工作树的文件夹

$ rm -rf ../path/to/worktree
Run Code Online (Sandbox Code Playgroud)

之后,删除工作树本身

$ git worktree prune
Run Code Online (Sandbox Code Playgroud)

如果你有多个工作树,上面的命令只修剪它的路径不再存在的工作树,所以不要担心!

最后,删除分支(与工作树相同的分支名称)

$ git branch -D <branch-name>
Run Code Online (Sandbox Code Playgroud)


rod*_*igo 12

分支是必要的,因为您不能同时在不同的工作树中检出相同的分支.

因此,如果在添加工作树时没有指定分支,那么git将根据您当前的分支和worktree目录的名称自动添加一个分支.

你可能会问,为什么我不能两次同一个分支结账?想想当你提交B时工作树A会发生什么,如果他们都共享分支......工作树A会看到B中的提交作为本地差异,但反之亦然!就像你做的那样git reset --soft HEAD^......那将是非常危险的.

顺便说一句,这就是为什么你不能推送到已检出的非裸存储库的分支的原因.

关于你的上一个问题:你能删除分支吗?当然,那个分支绝不是特别的.只要没有在任何地方签出,您就可以删除它.


Efr*_*eto 8

从 Git 2.17.0 开始,您可以安全地运行此多合一命令

git worktree remove <path>
Run Code Online (Sandbox Code Playgroud)