微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重命名所有旧的分支脚本

如何解决重命名所有旧的分支脚本

如何重命名最后一次提交的日期早于31/12/2019的所有分支,在远程存储库的实际名称之前添加“ OLD _”

解决方法

这是一个脚本,可以执行您想要的操作(+示例)。

这是我的一些随机分支的列表,这些分支的最后更新于2018年,我们将在该脚本上运行。该脚本要求您在每个分支都有一个本地副本,但是最后我将展示如何将脚本修改为完全自动化(对于自动化最终在远程上执行的操作而言,它并不多。)

    zrrbite@ZRRBITE MINGW64 /d/dev/git/jspaint (master)
    $ git for-each-ref --sort='-committerdate' --format='%(refname)%09%(committerdate)' 
    refs/heads | sed -e 's-refs/heads/--'

    master          Mon Aug 31 13:54:23 2020 +0200
    newnewbr        Tue Aug 28 00:08:31 2018 +0200
    newbranch       Tue Aug 28 00:06:51 2018 +0200
    gh-pages        Tue Feb 6 21:12:34 2018 +0100
    some_branch     Thu Feb 1 20:57:43 2018 +0100
    test            Thu Feb 6 18:47:16 2014 -0800

脚本:

    #!/bin/bash
    for k in $(git branch | sed /\*/d); do
      if [ -n "$(git log -1 --before='2019-12-31' -s $k)" ]; then
        git branch -m $k OLD_$k
      fi
    done

运行脚本的输出:

zrrbite@ZRRBITE MINGW64 /d/dev/git/jspaint (OLD_test)
$ git branch
  OLD_gh-pages
  OLD_newbranch
  OLD_newnewbr
  OLD_some_branch
* OLD_test

现在,您可以手动推动这些分支并删除远程分支上的旧分支。如果要推送重命名的分支并自动删除旧的分支,则可以将脚本重新编写为:

    #!/bin/bash
    for k in $(git branch | sed /\*/d); do
      if [ -n "$(git log -1 --before='2019-12-31' -s $k)" ]; then
        git branch -m $k OLD_$k
        git push origin --delete $k
        git push origin OLD_$k
      fi
    done

如果您想更进一步,并假设您没有签出本地分支机构,可以选择:

  • 检查git branch -r(用于远程分支机构)
  • 检出分支并重命名(如果适用)
  • 推树枝
  • 删除旧的

如果您有很多分支,并且没有本地副本,那么尝试这种方法可能是明智的选择。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。