如何解决重命名所有旧的分支脚本
如何重命名最后一次提交的日期早于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 举报,一经查实,本站将立刻删除。