git 最近结帐分支的别名

git alias for recent checkout branches

我最近发现这个命令可以获取最近 10 个签出分支的列表。

git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print  }' | awk ' !x[[=11=]]++' | head -n10

我想为这个调用创建一个别名 "git recent",但是当我尝试 运行 配置命令时它抛出一个错误。 “未找到事件

git config --global alias.recent 'reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print  }' | awk ' !x[[=12=]]++' | head -n10'

有没有办法把这个复杂的命令作为别名。如果有人知道如何将它作为除数字参数之外的别名,我们也将不胜感激。命令末尾的 -n10 说明有多少分支到 return.

"event not found" 来自你的 bash 解释命令行中的 ! ...你在第二个命令中混淆了你的单引号。应该清楚如何解决这个问题;说如果你有困难搞清楚...

双引号也不起作用:

> echo '!'
!
> echo "!"
bash: !: event not found

提示:你可以在外面加上引号',然后在里面使用",这会转义整个命令,包括bash中的!

我现在没有时间向您说明这一点,但我相信您很快就会明白...;)

这适用于遇到此问题且此命令对他们感兴趣的任何人。我确定了一个方法。

首先,我放弃了尝试使用 git 配置命令来执行此操作。我改为打开 git 配置文件本身并以这种方式添加别名。 Adding git aliases

其次我确定我的脚本是正确的我只需要将它添加为一个函数。 my_alias = "!f() { <你的复杂命令> }; f" How to add Advanced alias template in git

这是我的别名示例。

[alias]
    recent = "!f() { git reflog | egrep -io 'moving from ([^[:space:]]+)' | awk '{ print  }' | awk ' !x[[=10=]]++' | head -n${1-10}; }; f"

虽然与您要求的有点不同,但找出最近更改过的分支可能更有意义。

在这种情况下 git branch 实际上有一个 --sort=<key> 选项,它可以打印按给定键排序的分支,例如:

git branch --sort=-committerdate -v

这将按 committerdate 对分支进行排序,但如 -committerdate 中的前缀 - 所指定的那样相反。并打印最新的提交,以设置别名,例如 br、运行 此命令:

git config --global alias.br "branch --sort=-committerdate -v"

git-branch manual