【发布时间】:2014-09-25 12:46:59
【问题描述】:
在 Git 分支之间移动时,我有时会忘记我最近所在的分支的名称。如何按结帐顺序显示最近签出的分支/标签/提交列表?
【问题讨论】:
标签: git git-branch git-checkout
在 Git 分支之间移动时,我有时会忘记我最近所在的分支的名称。如何按结帐顺序显示最近签出的分支/标签/提交列表?
【问题讨论】:
标签: git git-branch git-checkout
您可以使用 Git 的 reflog按结帐顺序显示最近的动作:git reflog
这是一个脚本,您可以通过 git recent 从任何 Git 存储库中下载和使用:https://gist.github.com/jordan-brough/48e2803c0ffa6dc2e0bd
$ (master) git recent -n 5
1) master 4) deleted-branch
2) stable 5) improve-everything
3) fun
Choose a branch: 2
$ (stable) …
有关更多详细信息/选项,请参阅the gist。
这基本上是脚本为使 reflog 输出更有用所做的工作:
$ git reflog | egrep -io "moving from ([^[:space:]]+)" | awk '{ print $3 }' | awk ' !x[$0]++' | egrep -v '^[a-f0-9]{40}$' | head -n5
master
stable
fix-stuff
some-cool-feature
feature/improve-everything
【讨论】:
git recent(下载脚本,使其可执行,将其放在您的路径中)。您是否有理由要改用 git 别名?
我的 zshell 中有一个类似的衬里,它需要一个 arg 来指定历史应该多长时间,默认为 10。
alias bstack='f() { git reflog | grep checkout | cut -d " " -f 8 | uniq | head ${1} | cat -n };f'
例如,列出最后 3 个分支
bstack -3
1 my-current-branch
2 my-previous-branch
3 my-third-most-recent-branch
我从中导出了几个有用的快捷方式
alias bjmp='fn() { bstack ${1} | tail -1 | cut -f 2 | xargs git checkout }; fn'
允许我从上面的数字中指定要签出的分支
bjmp -3
将结帐“my-third-most-recent-branch”
alias b="bstack -1"
alias bpop="bjmp -2"
在一次击键中查看当前分支也很有用(尽管这不是最简单的方法),并且只检查前一个分支。
【讨论】: