在工作中使用Git。分支机构的数量正在增长。目的是删除早于X周的分支。

尝试1

运行git branch -h可能会指出创建分支后要检查的内容。 />
user@localhost $ git branch -h
usage: git branch [<options>] [-r | -a] [--merged | --no-merged]
   or: git branch [<options>] [-l] [-f] <branch-name> [<start-point>]
   or: git branch [<options>] [-r] (-d | -D) <branch-name>...
   or: git branch [<options>] (-m | -M) [<old-branch>] <new-branch>
   or: git branch [<options>] [-r | -a] [--points-at]

Generic options
    -v, --verbose         show hash and subject, give twice for upstream branch
    -q, --quiet           suppress informational messages
    -t, --track           set up tracking mode (see git-pull(1))
    --set-upstream        change upstream info
    -u, --set-upstream-to <upstream>
                          change the upstream info
    --unset-upstream      Unset the upstream info
    --color[=<when>]      use colored output
    -r, --remotes         act on remote-tracking branches
    --contains <commit>   print only branches that contain the commit
    --abbrev[=<n>]        use <n> digits to display SHA-1s

Specific git-branch actions:
    -a, --all             list both remote-tracking and local branches
    -d, --delete          delete fully merged branch
    -D                    delete branch (even if not merged)
    -m, --move            move/rename a branch and its reflog
    -M                    move/rename a branch, even if target exists
    --list                list branch names
    -l, --create-reflog   create the branch's reflog
    --edit-description    edit the description for the branch
    -f, --force           force creation, move/rename, deletion
    --merged <commit>     print only branches that are merged
    --no-merged <commit>  print only branches that are not merged
    --column[=<style>]    list branches in columns
    --sort <key>          field name to sort on
    --points-at <object>  print only branches of the object


尝试2

这篇文章https://stackoverflow.com/questions/3184555/cleaning-up-old-remote-git-branches已找到,但这不是一个选择,因为它会在不检查年龄的情况下删除分支。

评论

Git不存储分支机构afaik的创建日期。可以删除最近未提交的分支吗?

@XiongChiamiov您最近的定义是什么?

无论您想要什么。该句子的重要部分是“致力于”与“创造”。

#1 楼

注意:此答案显示了如何查找很久以前已*更新*的分支,而不是很久以前已*创建*(即从某些父级拼接而来)的分支。我相信这是OP真正想要的(相对于他为问题选择的标题),因为这将导致删除的良好候选者。

您必须记得git中的一个分支是没有“物理”。根据定义,从字面上看,它只是.git/refs中的一个简单文本文件,仅具有其文件名(即分支名)和提示/提示提交的哈希。它没有日期信息或其他任何信息。

所以git branch在这里无法为您提供帮助。

具有相关日期的对象类型是git中的提交。因此,您必须列出提交。这是通过git log完成的。

因此,一个有效的命令将是: / docs / git-log,但简而言之,它表示




--remotes:以任何远程分支开始(用--branches代替本地分支)

--before ...:仅列出早于给定日期的提交

--no-walk:仅列出每个分支的第一次提交,不回溯历史记录

--decorate:显示所有关联的标签和分支名称,以防万一

这将为您提供所有早于给定日期的分支头。

评论


显示早于X的分支(+1),以及一些详细信息。是否也可以像git branch的输出那样只返回分支名称?

– 030
18-2-11在13:37



看到这个答案stackoverflow.com/questions/10325599/…

–Vorsprung
18年2月11日在16:13

当然,@ 030是--format选项,如果需要,可以仅用于输出ref(分支)名称。 Vorsprung还链接了一个重复的问题,该问题使用少量bash脚本遍历分支并删除内容。

– AnoE
18年2月11日在19:24