Как изменить git порядок вывода ветвей

Когда я набираю git branch, я получаю список ветвей, которые сортируются по алфавиту, а не сортируются по времени их создания.

Есть ли способ сделать вывод git branch отсортированным по дате?

Ответ 1

Изменить

Увы, есть очевидные проблемы с параметрами сортировки, сделанными 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

Ответ 2

Начиная с git 2.7.0 это будет работать:

git branch --sort=-committerdate

Ответ 3

Ответ Stujo мой любимый, но я хотел сделать еще один шаг и сделать сортировку по дате git branch поведением в git branch умолчанию. Вот как:

git config --global branch.sort -committerdate

Удалите - перед committerdate чтобы отсортировать другим способом.

Теперь git branch всегда будет отсортирована по дате!