haw*_*eye 36 git branch code-cleanup
我知道分支并不真正存储创建者信息 - 而且它们只是指向提交的指针.
我的目标是能够清理已经合并回主分支的旧分支,并列出尚未完成此分支的分支.(清理).
这与"查找未合并的分支"不同,因为我也希望找到合并的分支,我想通过作者来完成.
我的问题是:是否有一个脚本列出由我创建的git分支?
Sac*_*nny 49
此命令列出所有分支及其作者姓名
git for-each-ref --format=' %(authorname) %09 %(refname)' --sort=authorname
Run Code Online (Sandbox Code Playgroud)
如果您正在使用github,您还可以访问https://github.com/author/repo/branches/yours以获取所有分支机构
如果您只想删除所有已合并的分支,您可以使用该命令
git branch --merged | grep -v "\*" | grep -v master | grep -v dev | xargs -n 1 git branch -d
Run Code Online (Sandbox Code Playgroud)
有关详细信息,git for-each-ref
请访问此处.
Ski*_*ore 21
这里的聚会有点晚了,但这是搜索“list git branch for author”时在谷歌上的最高结果。
在 git 中查找远程分支的单行代码是:
git branch -r | xargs -L1 git --no-pager show -s --oneline --author="$(git config user.name)"
Run Code Online (Sandbox Code Playgroud)
git branch -r - 列出所有远程分支。
xargs -L1 - 将上一个命令的结果转换为下一个命令的参数。
git show - git show,显示 git 中的各种对象。在这种情况下,它将显示每个分支上的最新提交,以及完整的差异。
标志-s抑制差异输出。
标志--oneline将提交信息压缩为一行。
标志--author="$(git config user.name)"仅显示当前 git 用户的提交。
标志--no-pager在没有寻呼机的情况下运行 git。如果没有这个标志,结果的每个提交都将在它自己的寻呼机实例中打开,这可能取决于你的寻呼机。
最终结果将如下所示:
efbd5d738b (origin/feature/A) commit feature A
297e83d9a6 (origin/feature/B) commit feature B
951f6638de (origin/test/A) commit test A
307d16741b (origin/master) latest master commit
Run Code Online (Sandbox Code Playgroud)
请注意,如果给定作者是这些分支上的最新提交者,则列表将包含 master 和 develop 分支。
尝试了上面“SachinSunny”的答案,将其修改为
git for-each-ref --sort=authorname --format "%(authorname) %(refname)"
Run Code Online (Sandbox Code Playgroud)
这给作者和分支,本地和远程分支,按“最后作者”排序
作为上面 SachinSunny 的回答的轻微浓缩,您可以使用 grep 的正则表达式功能来完成一个更简单的命令:
git branch --merged | grep -Pv "\*|master|dev" | xargs -n 1 git branch -d
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20703 次 |
最近记录: |