在从不同的工作树签出分支时,是否可以强制git更改目录而不是致命错误?

在从不同的工作树签出分支时,是否可以强制git更改目录而不是致命错误?,git,git-checkout,git-worktree,Git,Git Checkout,Git Worktree,我几乎没有工作树: $ git worktree list /home/kes/work/projects/video/app 7509c7f [dev] /home/kes/work/projects/video/second c12cdf9 [newbr] 当我从dev分支(工作树)执行git checkout newbr时,我希望切换到不同的目录,而不是获取错误: $ git checkout newbr fatal: 'newbr' is already checked ou

我几乎没有工作树:

$ git worktree list
/home/kes/work/projects/video/app     7509c7f [dev]
/home/kes/work/projects/video/second  c12cdf9 [newbr]
当我从
dev
分支(工作树)执行
git checkout newbr
时,我希望切换到不同的目录,而不是获取错误:

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

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

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

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

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