按分支名称对 `git branch --all` 中的分支进行排序
Order branches in `git branch --all` by branch name
我有一个包含多个遥控器的存储库。当我发出 git branch --all --verbose
时,它显示:
bar 9876de11 hello world
foo 12abde23 description
master 34fd4545 tony the pony
quz ab34df67 me, too
remotes/origin/bar 9876de11 hello world
remotes/origin/foo 12abde23 description
remotes/origin/master 34fd4545 tony the pony
remotes/origin/quz ab34df67 me, too
remotes/zulu/bar 9876de11 hello world
remotes/zulu/foo 12abde23 description
remotes/zulu/master 34fd4545 tony the pony
remotes/zulu/quz ab34df67 me, too
在此输出中,很难看出每个本地分支机构是否都与其远程分支机构相当。我喜欢按本地分支名称排序的输出:
bar 9876de11 hello world
remotes/origin/bar 9876de11 hello world
remotes/zulu/bar 9876de11 hello world
foo 12abde23 description
remotes/origin/foo 12abde23 description
remotes/zulu/foo 12abde23 description
master 34fd4545 tony the pony
remotes/origin/master 34fd4545 tony the pony
remotes/zulu/master 34fd4545 tony the pony
quz ab34df67 me, too
remotes/origin/quz ab34df67 me, too
remotes/zulu/quz ab34df67 me, too
这样,浏览输出以查看未推送的更改会更容易在眼睛上看到。一个天真的解决方案
git branch -a -v | sort -t / -k 3
不起作用,因为本地条目中没有“/”供 sort
查找。
这可能有点粗糙,但试试这个:
git branch --all --verbose | sed 's/^[ *] //' | while read line; do echo $(basename $(echo $line | awk '{ print }')) $line; done | sort | cut -d' ' -f2-
基本上,我们提取分支的 basename
,只给我们分支名称,没有 remotes/origin/whatever
。然后我们对其进行排序,然后通过 cut
将其从最终输出中删除。这可以调整和清理,但它应该给你一个起点。您还可以将 --color
添加到初始 git branch
以保留您看到的彩色输出,而无需将 git
管道连接到任何内容。
我有一个包含多个遥控器的存储库。当我发出 git branch --all --verbose
时,它显示:
bar 9876de11 hello world
foo 12abde23 description
master 34fd4545 tony the pony
quz ab34df67 me, too
remotes/origin/bar 9876de11 hello world
remotes/origin/foo 12abde23 description
remotes/origin/master 34fd4545 tony the pony
remotes/origin/quz ab34df67 me, too
remotes/zulu/bar 9876de11 hello world
remotes/zulu/foo 12abde23 description
remotes/zulu/master 34fd4545 tony the pony
remotes/zulu/quz ab34df67 me, too
在此输出中,很难看出每个本地分支机构是否都与其远程分支机构相当。我喜欢按本地分支名称排序的输出:
bar 9876de11 hello world
remotes/origin/bar 9876de11 hello world
remotes/zulu/bar 9876de11 hello world
foo 12abde23 description
remotes/origin/foo 12abde23 description
remotes/zulu/foo 12abde23 description
master 34fd4545 tony the pony
remotes/origin/master 34fd4545 tony the pony
remotes/zulu/master 34fd4545 tony the pony
quz ab34df67 me, too
remotes/origin/quz ab34df67 me, too
remotes/zulu/quz ab34df67 me, too
这样,浏览输出以查看未推送的更改会更容易在眼睛上看到。一个天真的解决方案
git branch -a -v | sort -t / -k 3
不起作用,因为本地条目中没有“/”供 sort
查找。
这可能有点粗糙,但试试这个:
git branch --all --verbose | sed 's/^[ *] //' | while read line; do echo $(basename $(echo $line | awk '{ print }')) $line; done | sort | cut -d' ' -f2-
基本上,我们提取分支的 basename
,只给我们分支名称,没有 remotes/origin/whatever
。然后我们对其进行排序,然后通过 cut
将其从最终输出中删除。这可以调整和清理,但它应该给你一个起点。您还可以将 --color
添加到初始 git branch
以保留您看到的彩色输出,而无需将 git
管道连接到任何内容。