我可以强制 git 在检查不同工作树的分支时更改目录而不是致命错误吗?

May I force git to change directory instead of fatal error while checking out branch from different 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 out at '/home/kes/work/projects/video/second'

目前我是:

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

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

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

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

的工作目录