这个答案告诉了如何签出到前一个分支,并帮助解释了@{-1}
: https://stackoverflow.com/a/7207542/3150057
如果我在更改分支之前存储了一些代码,那么前一个分支是重要的,现在我正在考虑对存储进行工作。
是否有一种方法可以快速查看前一个分支的名称,而无需搜索git reflog show
以获取最新的checkout: moving from foo to bar
条目?
更多信息:
这是一个解决我忘记我以前的工作环境的方法,这种情况通常发生在吃完午饭回来后。
git rev-parse @{-1}
显示了将被git checkout -
签出的分支的HEAD提交,而不是分支名称。
git branch --contains @{-1}
将列出每个提交的分支。
将该提交的分支(es)列出为HEAD将是有帮助的,因为它可以帮助提醒我以前的工作环境,但我不确定如何做到这一点。
如果只需要名称,可以使用:
git rev-parse --symbolic-full-name --abbrev-ref=loose @{-1}
例如:
$ git checkout mybranch
$ git checkout master
$ git rev-parse --symbolic-full-name --abbrev-ref=loose @{-1}
> mybranch
它比被接受的答案更可取,因为它没有显示"头";在名称中,这样它可以与其他git命令链接。
警告上一个答案使用
git name-rev $(git rev-parse @{-1}) --name-only
只在分支有不同的提交时起作用。否则它可能返回错误的分支
也许这就是你想要的:
git describe --all $(git rev-parse @{-1})
来自git-describe
手册页:
--all
不要只使用带注释的标签,而是使用refs/中找到的任何ref名称空间。这个选项可以匹配任何已知的分支,远程跟踪分支,或轻量级标签。
例如,如果我这样做:
$ git checkout mybranch
$ git checkout master
$ git describe --all $(git rev-parse @{-1})
我看到:
heads/mybranch