Подтвердить что ты не робот

В Git перечислены имена ветвей с неустановленными коммитами

Учитывая проект с несколькими локальными ветвями, каждый из которых отслеживает удаленную ветвь, есть ли команда, в которой перечислены все ветки, которые не разблокировали транзакции? (То есть, даже если ни одна из этих ветвей не проверена.)

Я не хочу видеть сами коммиты и не хочу видеть ветки, которые актуальны, я просто хочу видеть, какие ветки впереди своих пультов.

Я пробовал git log --branches --not --remotes --simplify-by-decoration --decorate --oneline, но, похоже, он не показывает, что мне нужно. Запуск этого в моем текущем репо не дает выхода, но запуск git status в моей текущей ветки показывает Your branch is ahead of 'origin/branchname' by 2 commits.

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads и git branch -v отображаются как обновленные ветки, так и те, которые требуют нажатия. Тем не менее, они оба показывают мою текущую ветвь как [ahead 2].

Другие команды, которые я нашел, например. git log @{u}.., git cherry -v укажите сами фиксации, а не ветки.

Боковой вопрос: почему вывод из git log --branches --not --remotes --simplify-by-decoration --decorate --oneline не включает ветки, которые git branch -v показывает как впереди? Не первая команда, просто смотрящая на которой refs/heads не соответствует известному пульту; так что бы отрасль, указанная в качестве [ahead 2], соответствовала этим критериям?

4b9b3361

Ответ 1

Опция --no-walk для log, похоже, лучше справляется с тем, что мне нужно, чем --simplify-by-decoration. Моя полная команда:

git log --branches --not --remotes --no-walk --decorate --oneline

... который я сменил на unpushed.

Ответ 2

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads

Это остается самым точным ответом на то, что вы можете легко разобрать /grep, чтобы получить желаемый результат (например, удаление актуальных ветвей)

Вы можете сделать это в bash script, который вы назовете git-xxx (без расширения), где-нибудь в $PATH или %PATH%.
Затем script можно вызвать с помощью git xxx и будет использовать git bash.
Это переносимо и будет работать на разных платформах (что означает даже в Windows, где <Git For Windows>/usr/bin включает в себя 200+ команд Linux (grep, sed, awk, xargs,...)