如何对git分支输出进行版本排序(相对于通常的字母/词典排序)



我使用git branch-a来显示分支。

我假设git分支-a不是按字母顺序排序的。

需要git branch -a1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11那样以数字排序,而不是10, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9

考虑一下,我没有能力将分支重命名为前缀0Part-02,例如作为一种变通方法。

我对第三方命令行git客户持开放态度,也是最后的手段。

关于做git branch -a

电流输出

remotes/origin/Part-10_LoadStateListener
remotes/origin/Part-11_Navigating-to-the-Detail-Screen
remotes/origin/Part-12_Implementing-the-DetailsFragment
remotes/origin/Part-13_Handling-Process-Death
remotes/origin/Part-1_Project-Setup
remotes/origin/Part-2_Layouts-&-Model-Class
remotes/origin/Part-3_Navigation-Component
remotes/origin/Part-4_API-Interface
remotes/origin/Part-5_Dependency-Injection-with-Hilt
remotes/origin/Part-6_PagingSource-&-PagingData
remotes/origin/Part-7_PagingDataAdapter
remotes/origin/Part-8_Header-&-Footer
remotes/origin/Part-9_Search-Functionality

预期输出

remotes/origin/Part-1_Project-Setup
remotes/origin/Part-2_Layouts-&-Model-Class
remotes/origin/Part-3_Navigation-Component
remotes/origin/Part-4_API-Interface
remotes/origin/Part-5_Dependency-Injection-with-Hilt
remotes/origin/Part-6_PagingSource-&-PagingData
remotes/origin/Part-7_PagingDataAdapter
remotes/origin/Part-8_Header-&-Footer
remotes/origin/Part-9_Search-Functionality
remotes/origin/Part-10_LoadStateListener
remotes/origin/Part-11_Navigating-to-the-Detail-Screen
remotes/origin/Part-12_Implementing-the-DetailsFragment
remotes/origin/Part-13_Handling-Process-Death

我希望有一个像--numeric-sort这样的标志,这样我就可以使用git branch -a --numeric-sort

git本身不支持这样的命令的丰富排序选项(编辑:事实证明这不再是真的,请参阅Hasturkun的回答以了解详细信息(,但由于shell的强大功能,您可以轻松地使用外部程序为您对输出进行排序。

GNU排序和BSD排序都提供了类似于自然排序顺序的-V选项,因此类似

git branch -a | sort -V

应该给你这样的输出:

remotes/origin/Part-1_Project-Setup
remotes/origin/Part-2_Layouts-&-Model-Class
remotes/origin/Part-3_Navigation-Component
remotes/origin/Part-4_API-Interface
remotes/origin/Part-5_Dependency-Injection-with-Hilt
remotes/origin/Part-6_PagingSource-&-PagingData
remotes/origin/Part-7_PagingDataAdapter
remotes/origin/Part-8_Header-&-Footer
remotes/origin/Part-9_Search-Functionality
remotes/origin/Part-10_LoadStateListener
remotes/origin/Part-11_Navigating-to-the-Detail-Screen
remotes/origin/Part-12_Implementing-the-DetailsFragment
remotes/origin/Part-13_Handling-Process-Death

您可以要求git为您对refnames进行版本排序(从git 2.7.0开始(:

git branch -a --sort=v:refname
remotes/origin/foo_1_bar
remotes/origin/foo_2_bar
remotes/origin/foo_3_bar
remotes/origin/foo_4_bar
remotes/origin/foo_5_bar
remotes/origin/foo_6_bar
remotes/origin/foo_7_bar
remotes/origin/foo_8_bar
remotes/origin/foo_9_bar
remotes/origin/foo_10_bar
remotes/origin/foo_11_bar

vs:

git branch -a
remotes/origin/foo_10_bar
remotes/origin/foo_11_bar
remotes/origin/foo_1_bar
remotes/origin/foo_2_bar
remotes/origin/foo_3_bar
remotes/origin/foo_4_bar
remotes/origin/foo_5_bar
remotes/origin/foo_6_bar
remotes/origin/foo_7_bar
remotes/origin/foo_8_bar
remotes/origin/foo_9_bar

最新更新