首页 > 解决方案 > 从不同的工作树签出分支时,我可以强制 git 更改目录而不是致命错误吗?

问题描述

我的工作树很少:

$ git worktree list
/home/kes/work/projects/video/app     7509c7f [dev]
/home/kes/work/projects/video/second  c12cdf9 [newbr]

当我git checkout newbrdev分支(工作树)做时,我想切换到不同的目录,而不是得到错误:

$ git checkout newbr
fatal: 'newbr' is already checked out at '/home/kes/work/projects/video/second'

目前我做:

cd /home/kes/work/projects/video/second

是否有自动执行此操作的选项?

标签: gitgit-checkoutgit-worktree

解决方案


不,这是不可能的。当前工作目录是一个进程(在本例中为您的 shell)的属性,从它调用的进程(如 Git)不能更改其父级的工作目录。允许这种情况发生会破坏很多软件。

你可以在你的 shell 中创建一个别名或函数,比如说gco,它会查找你的存储库是否有一个工作树,如果有,切换到它,如果没有,检查那个分支。由于该操作完全在您的 shell 中进行,因此可以更改 shell 的工作目录。


推荐阅读