当我输入git branch
时,我会收到一个分支列表,这些分支似乎按字母顺序排序,而不是按创建时间排序。
有没有办法让git branch
的输出按日期排序?
答案 0 :(得分:10)
修改
唉git-for-each-ref
采取的排序选项存在明显问题。由于该命令(显然)明确地旨在显示refs
并且接受--sort
选项,因此我认为这可能是一个错误[1]。
这是我可以进一步提出的最佳选项,但输出与原始格式相差甚远(因为它们依赖于事后的装饰修订来引用分支)。好吧,也许这对你有用:
[1]如果这是git-rev-list
或git-log
我会认为问题在于我们实际上并非行走修订树;我们正在积极尝试只展示树木的提示,而不是走路。
子>
git log --no-walk --date-order --oneline --decorate \
$(git rev-list --branches --no-walk)
这会给你一个类似于
的列表4934e92 (HEAD, origin/testing, origin/HEAD, testing) reviewed INSTALL file as per #1331
6215be7 (origin/maint, maint) reviewed INSTALL file as per #1331
1e5e121 (origin/emmanuel, emmanuel) buffers: adjust the size in zfsfuse_stat
e96783e (origin/compress, compress) buffers: adjust the size in zfsfuse_stat
f6e2c6c (origin/unstable, unstable) revert the fatal condition again
dd52720 (origin/master-lucid, master-lucid) lucid
3b32fa7 (tag: 0.7.0, origin/master, master) panic revocation of 0.7.0-0 package necessitates an update
6eaa64f (origin/maint-0.6.9, maint-0.6.9) Replace remount by drop_caches (on rollback)
_正如您所看到的,在存在许多远程(跟踪)分支的情况下,结果可能会有点压倒性,这有效地将相同的修订版别名。但是,结果按(降序)日期正确排序。
不,但你应该可以做到
git for-each-ref --sort='-*committerdate' --format="%(refname:short)" refs/heads/
(使用--sort='-*authordate'
进行作者日期排序)
在我的测试回购中,这会产生:
compress
emmanuel
maint
maint-0.6.9
master
master-lucid
testing
unstable
你可以创建一个git别名来执行此操作:将以下行追加到.git/config
[alias]
branch2 = git for-each-ref --sort='-*committerdate' --format="%(refname:short)" refs/heads/
从那时起,你可以说git branch2
答案 1 :(得分:1)
从git 2.7.0开始,它将起作用:
git branch --sort=-committerdate
答案 2 :(得分:0)
Stujo's answer是我的最爱,但我想更进一步,按提交日期对我的默认git branch
行为进行排序。方法如下:
git config --global branch.sort -committerdate
在-
之前删除committerdate
,以另一种方式进行排序。
现在git branch
将始终按日期排序!