Я создал плагин, который может генерировать эффект предварительного просмотра в IE 7+ благодаря интернету, но имеет мало ограничений. Я помещал его в github page , чтобы его было легче получить
$(function () {
$("input[name=file1]").previewimage({
div: ".preview",
imgwidth: 180,
imgheight: 120
});
$("input[name=file2]").previewimage({
div: ".preview2",
imgwidth: 90,
imgheight: 90
});
});
.preview > div {
display: inline-block;
text-align:center;
}
.preview2 > div {
display: inline-block;
text-align:center;
}
Preview
Preview2
Используйте опцию --sort=-committerdate
из git for-each-ref
;
Также доступно начиная с Git 2.7.0 для git branch
:
git for-each-ref --sort=-committerdate refs/heads/
# Or using git branch (since version 2.7.0)
git branch --sort=-committerdate # DESC
git branch --sort=committerdate # ASC
git for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'
Я знаю, что ответов уже много, но вот мои два цента для простого псевдонима (мне нравится, когда моя последняя ветка внизу):
[alias]
br = !git branch --sort=committerdate --color=always | tail -n15
[color "branch"]
current = yellow
local = cyan
remote = red
Это даст вам хороший обзор последних 15 цветных веток с выделенной текущей веткой (и звездочкой).
Вот вариант, который я искал:
git for-each-ref --sort=-committerdate --format='%(committerdate)%09%(refname:short)' refs/heads/ | tail -r
То, что tail -r
переворачивает список, так что последний commiterdate
последний.
Обычно мы рассматриваем удаленные ветви в последнее время. Так что попробуйте это
git fetch
git for-each-ref --sort=-committerdate refs/remotes/origin
git branch --sort=-committerdate | head -5
Для любого, кто заинтересован в том, чтобы отсортировать только топ-5 названий веток на основе даты коммиттера.
Мой лучший результат в виде сценария:
git for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short)|%(committerdate:iso)|%(authorname)' |
sed 's/refs\/heads\///g' |
grep -v BACKUP |
while IFS='|' read branch date author
do
printf '%-15s %-30s %s\n' "$branch" "$date" "$author"
done
Вот небольшой скрипт, который я использую для переключения между последними ветвями:
#!/bin/bash
# sudo bash
re='^[0-9]+ Использование этих двух псевдонимов
recent = for-each-ref --sort=committerdate refs/heads/ --format=' %(color:blue) %(authorname) %(color:yellow)%(refname:short)%(color:reset)'
recent-nf = for-each-ref --sort=committerdate refs/heads/ --format=' %(authorname) %(refname:short)'
Просто позвоните в git-репо, и он покажет вам последние N ветвей (по умолчанию 10) и число в каждой. Введите номер филиала и он проверяется:
if [[ "$1" =~ $re ]]; then
lines="$1"
else
lines=10
fi
branchs="$(git recent | tail -n $lines | nl)"
branchs_nf="$(git recent-nf | tail -n $lines | nl)"
echo "$branchs"
# Prompt which server to connect to
max="$(echo "$branchs" | wc -l)"
index=
while [[ ! ( "$index" =~ ^[0-9]+$ && "$index" -gt 0 && "$index" -le "$max" ) ]]; do
echo -n "Checkout to: "
read index
done
branch="$( echo "$branchs_nf" | sed -n "${index}p" | awk '{ print $NF }' )"
git co $branch
clear
Использование этих двух псевдонимов
recent = for-each-ref --sort=committerdate refs/heads/ --format=' %(color:blue) %(authorname) %(color:yellow)%(refname:short)%(color:reset)'
recent-nf = for-each-ref --sort=committerdate refs/heads/ --format=' %(authorname) %(refname:short)'
Просто позвоните в git-репо, и он покажет вам последние N ветвей (по умолчанию 10) и число в каждой. Введите номер филиала и он проверяется:
На основе версии ilius, но с текущей ветвью, отмеченной звездочкой и цветом, и показывающей только то, что не описано как «месяцы» или «годы» назад:
current_branch="$(git symbolic-ref --short -q HEAD)"
git for-each-ref --sort=committerdate refs/heads \
--format='%(refname:short)|%(committerdate:relative)' \
| grep -v '\(year\|month\)s\? ago' \
| while IFS='|' read branch date
do
start=' '
end=''
if [[ $branch = $current_branch ]]; then
start='* \e[32m'
end='\e[0m'
fi
printf "$start%-30s %s$end\\n" "$branch" "$date"
done
У меня была такая же проблема, поэтому я написал рубиновый камень под названием Twig . В нем перечислены ветви в хронологическом порядке (сначала самые новые), а также можно указать максимальный возраст, чтобы вы не перечисляли все ветви (если их много). Например:
$ twig
issue status todo branch
----- ------ ---- ------
2013-01-26 18:00:21 (7m ago) 486 In progress Rebase optimize-all-the-things
2013-01-26 16:49:21 (2h ago) 268 In progress - whitespace-all-the-things
2013-01-23 18:35:21 (3d ago) 159 Shipped Test in prod * refactor-all-the-things
2013-01-22 17:12:09 (4d ago) - - - development
2013-01-20 19:45:42 (6d ago) - - - master
Он также позволяет хранить пользовательские свойства для каждой ветви, например, идентификатор заявки, статус, задачи и фильтровать список ветвей в соответствии с этими свойствами. Дополнительная информация: http://rondevera.github.io/twig/
. Добавляет немного цвета (поскольку pretty-format
недоступно)
[alias]
branchdate = for-each-ref --sort=-committerdate refs/heads/ --format="%(authordate:short)%09%(objectname:short)%09%1B[0;33m%(refname:short)%1B[m%09"
Мне нравится использовать относительную дату и сокращать название ветви следующим образом:
git for-each-ref --sort='-authordate:iso8601' --format=' %(authordate:relative)%09%(refname:short)' refs/heads
Что дает вывод:
21 minutes ago nathan/a_recent_branch
6 hours ago master
27 hours ago nathan/some_other_branch
29 hours ago branch_c
6 days ago branch_d
Я рекомендую создать файл bash для добавления всех ваших любимые псевдонимы, а затем поделиться сценарием с вашей командой. Вот пример для добавления только этого:
#!/bin/sh
git config --global alias.branches "!echo ' ------------------------------------------------------------' && git for-each-ref --sort='-authordate:iso8601' --format=' %(authordate:relative)%09%(refname:short)' refs/heads && echo ' ------------------------------------------------------------'"
Затем вы можете просто сделать это, чтобы получить красиво отформатированный и отсортированный список локальных ветвей:
git branches
Обновление: сделайте это, если вы хочу раскраски:
#!/bin/sh
#
(echo ' ------------------------------------------------------------' && git for-each-ref --sort='-authordate:iso8601' --format=' %(authordate:relative)%09%(refname:short)' refs/heads && echo ' ------------------------------------------------------------') | grep --color -E "$(git rev-parse --abbrev-ref HEAD)$|$"
Я смог сослаться на приведенные выше примеры, чтобы создать что-то, что лучше всего подходит для меня.
git for-each-ref --sort = -committerdate refs /heads / --format = '% (автор: короткий)% (цвет: красный)% (имя объекта: короткий)% (цвет: желтый) )% (refname: short)% (цвет: сброс) (% (цвет: зеленый)% (committerdate: относительный)% (цвет: сброс)) '
Я использую следующий псевдоним:
recent = "!r(){git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)'|column -ts'|'}; r"
, который производит:
Редактировать: использовать '|' отделить, благодаря @ Björn Lindqvist
Обновление: добавлено * перед текущей веткой, благодаря @elhadi
Редактировать: исправил регистр где текущая ветвь была подстрокой другой ветки
Редактировать: использовать более простой синтаксис для текущей ветки, благодаря @Joshua Skrzypek
Вот оптимальный код, который объединяет два других ответа:
git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(authorname) %(refname:short)'
Вот простая команда, которая перечисляет все ветви с последними коммитами:
git branch -v
Чтобы упорядочить по последним коммитам, используйте
git branch -v --sort=committerdate
Источник: http: / /git-scm.com/book/en/Git-Branching-Branch-Management
Я придумал следующую команду (для Git 2.13 и позже):
git branch -r --sort=creatordate \
--format "%(creatordate:relative);%(committername);%(refname:lstrip=-1)" \
| grep -v ";HEAD$" \
| column -s ";" -t
Если у вас нет column
, вы можете заменить последнюю строку на
| sed -e "s/;/\t/g"
Вывод выглядит как
6 years ago Tom Preston-Werner book
4 years, 4 months ago Parker Moore 0.12.1-release
4 years ago Matt Rogers 1.0-branch
3 years, 11 months ago Matt Rogers 1.2_branch
3 years, 1 month ago Parker Moore v1-stable
12 months ago Ben Balter pages-as-documents
10 months ago Jordon Bedwell make-jekyll-parallel
6 months ago Pat Hawks to_integer
5 months ago Parker Moore 3.4-stable-backport-5920
4 months ago Parker Moore yajl-ruby-2-4-patch
4 weeks ago Parker Moore 3.4-stable
3 weeks ago Parker Moore rouge-1-and-2
19 hours ago jekyllbot master
Я написал пост в блоге о том, как работают различные части.
Испытал некоторые затруднения при обработке одинарных кавычек на Mac в bash_profile при попытке установить псевдоним. Этот ответ помог разрешить его ", Как выйти из одинарных кавычек в единственных заключенных в кавычки строках
Рабочее решение:
alias gb='git for-each-ref --sort=committerdate refs/heads/ --format='"'"'%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'"'"''
P.S. не Мог прокомментировать из-за моей репутации