在我们的团队中,我们为主分支机构和开发分支保留快进+ 合并策略,以防止合并提交地狱:
一旦它们被合并(或重新组合然后合并),我就不会删除我的主题分支,所以我最终得到了大量的这些分支。我可以删除一些:
git branch --merged
这只会告诉我那些在合并之前没有被重新定位的人。还有一些,我能够清理它们。
我正在寻找一些策略,脚本或提示如何处理重生的。必须有一个脚本可以在循环中找到主节点中主题分支的所有提交。请分享; - )
由于
答案 0 :(得分:3)
你有one script通过以下方式执行此操作:
这将删除已合并为主人的重新分支。
last_commit_msg="$(git log --oneline --format=%f -1 $branch)"
if [[ "$(git log --oneline --format=%f | grep $last_commit_msg | wc -l)" -eq 1 ]]; then
答案 1 :(得分:3)
我写了一个可以帮助解决这个问题的交互式脚本。
https://github.com/lzap/git-xcleaner
发送补丁并从其手册页(下图)中阅读警告!
git-xcleaner(1) - 交互式git分支删除概要
git xcleaner
说明
此工具有助于使用TUI删除未使用的主题分支(文本 用户界面)。它还提供预选分支的机制 可以安全地删除。
警告
此工具在确认后删除git分支。没有办法 收集git垃圾时回来仔细检查你的目标 除去!
返回值
成功归零,使用git进行操作时出现错误。
BUGS
的档案错误
答案 2 :(得分:2)
我想要一种非交互式的东西,它可以概括为每个分支超过一个提交。请注意,尚未对此进行广泛测试,并且在运行此命令时,可能会比您对克隆的状态做更多的假设:
为所有可以彻底重新建立基础的本地分支建立基础:
REBASE_TARGET=upstream/master
for branch in $(git for-each-ref --format="%(refname:lstrip=2)" refs/heads/); do
git rebase "$REBASE_TARGET" "$branch" || git rebase --abort
done
删除所有已合并的本地分支:
git branch --format="%(refname:lstrip=2)" --merged | xargs git branch -d