【问题标题】:git alias for recent checkout branches最近结帐分支的 git 别名
【发布时间】:2016-07-27 13:54:23
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: git alias


    【解决方案1】:

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

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

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

    这是我的别名的示例。

    [别名] 最近 = "!f() { git reflog | egrep -io '从 ([^[:space:]]+)' | awk '{ print $3 }' | awk ' !x[$0]++' | head -n${1-10}; }; f"

    【讨论】:

    • 对于它的价值,这也是我所做的——好吧,这个,或者避免使用复杂的别名。 :-) 问题是复杂的别名需要使用! 字符和大量引用,而shell 喜欢吃! 字符和各种引用。让它们在 shell 中存活并进入别名文件是一个不必要的麻烦,因为您可以运行 git config --global --edit 或等效的。
    【解决方案2】:

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

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

    git branch --sort=-committerdate -v
    

    这将按committerdate 对分支进行排序,但会按照- 前缀指定的顺序反转,如-committerdate。并打印最新提交,设置别名,例如br,运行以下命令:

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

    git-branch manual

    【讨论】:

    • 我也喜欢这个,但不完全适合我的用例。在我工作的地方,有四个开发人员在一个存储库中协作,该存储库每天包含十几个 Drupal 多站点。由于这种设置,我们有超过 1000 个分支,其中大部分的名称相似。我们每个人都在一周内处理多个项目,所以我只需要一种方法来查看我最近签出的分支列表,这样我就可以轻松地进行多任务处理并在我的工作中进行操作。我认为你的命令也会向我展示他们的工作,当我不记得我给分支命名的时候,这非常酷但压倒性的。
    • 谢谢你,我想我也能找到一种方法来使用它。
    【解决方案3】:

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

    双引号也不起作用:

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

    提示:您可以在外部引用',然后在内部使用",这将在bash 中转义包括! 在内的完整命令。

    我现在没有时间给你做那个声明,但我相信你很快就会明白的...... ;)

    【讨论】:

    • 如果这就是您所说的问题所在,我添加了双引号,但我仍然遇到同样的错误。 ---- git config --global alias.recent "reflog | egrep -io "moving from ([^[:space:]]+)" | awk '{ print $3 }' | awk ' !x[$0]+ +' | 头 -n10"
    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 2020-08-11
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2021-11-05
    • 2017-11-25
    • 2013-02-13
    相关资源
    最近更新 更多