我有很多当地的分支机构。运行git branch
列出它们,它们溢出页面。我经常想要在当前检出的分支和我最后工作的分支之间切换,或者可能在最后一个之前切换。如果我足够幸运地记住关键字(或票号),则该过程是通过眼睛或可能的命令+ f扫描20-30个本地分支的列表。
相反,我想说git branch
并通过结账订单显示分支。同样地,您似乎在最近的活动所订购的许多程序中列出了许多项目。这似乎是订单标准的明显默认选择,我很惊讶它不是git的默认值。
我修改了我的问题只是通过结账来询问。我无法找到一个排序谓词,它将根据每个分支最近结账的日期过滤git branch
的输出。
你有没有尝试过for-each-ref选项?有很多可排序的字段。
这是一个按authordate排序的
git for-each-ref --sort='-*authordate'
当我在我自己较小的一组分支上测试时,最近创建/签出的分支位于顶部。
看起来这些是git-ref结构中唯一的DATE / TIME字段:
"authordate"
"committerdate"
"taggerdate"
"creatordate"
您可以通过尝试此命令获取文档来了解更多信息:
git for-each-ref --help
也许作为检查.git / refs / heads更新的脚本?
按检出的顺序列出分支(不是最后提交顺序):
git log -g --grep-reflog "checkout:" --format="%gs" | cat -n | sed -E "s/^\s+([0-9]+).*from (.*) to .*/\1 \2/g" | tac
然后,您可以检查其中一个
git checkout @{-nnn}
其中nnn
是分支名称前显示的数字。要在当前和上一个分支之间切换,只需使用
git checkout -
您可以将上面的命令组合到新的git命令,如下所示:
git config --global alias.lb '!git log -g --grep-reflog "checkout:" --format="%gs" | cat -n | sed -E "s/^\s+([0-9]+).*from (.*) to .*/\1 \2/g" | tac; read -p "Aussuchen: " i; git checkout @{-$i}'
使用
git lb
显示最后使用的分支并选择其中一个。
git branch
支持与git for-each-ref
相同的排序选项,请参阅https://git-scm.com/docs/git-for-each-ref
这意味着您可以按照每个提交日期对分支进行排序:
git branch --sort='committerdate'
我经常想要在当前检出的分支和我最后工作的分支之间切换,或者可能在最后一个之前切换。
感谢您描述给您带来困难的情况,并询问如何实施您正在尝试的解决方案。
Git有一个非常直接的方法来解决这个问题。重复结账你最后工作,
git checkout @{-1}
并在最后重复之前
git checkout @{-2}