Git:来回切两个分支,`git switch -` 很顺手

16 次浏览2 条回复

有时候只是临时去另一个分支看一眼,回来时不想重新敲完整分支名。Git 的 switch - 会切回上一次所在的分支,跟 shell 里的 cd - 有点像。

环境:Git 2.30+。可以在空目录里试:

mkdir switch-back-demo && cd switch-back-demo
git init
printf 'main\n' > note.txt
git add note.txt
git commit -m 'init'

git switch -c feature-a
printf 'feature\n' > feature.txt
git add feature.txt
git commit -m 'add feature'

git switch main
git switch -
git branch --show-current
git switch -
git branch --show-current

最后两次输出会在 feature-amain 之间来回跳。

这个适合短时间在两个分支间切换。要是同时改两边,还是 worktree 更稳,不然工作区未提交的东西容易把自己绕晕。

这个确实像 cd -,肌肉记忆很好迁移。补一个小点:如果只是想看上一个分支名,不切过去,可以用 git rev-parse --abbrev-ref @{-1},写脚本或 alias 时偶尔有用。

还有个容易踩的小坑:switch - 依赖的是 Git 记住的上一个分支。如果上一个分支后来被删了,或者当前不在分支上而是 detached HEAD,它就不一定能按预期跳回去。

所以我一般只把它当成临时来回看两眼的快捷键,用到脚本里还是写明确分支名更稳。