Передайте хеш коммита функции git в симпатичном формате - PullRequest
1 голос
/ 15 октября 2019

Мое git-репо огромно (и создано людьми, знающими только прозрачный регистр), и я хочу найти все коммиты, относящиеся к идентификатору проблемы во всех ветвях, и в то же время зная, какие ветви содержат коммитов.

Однако следующая попытка не будет работать, так как $(git branch …) развернут до того, как %h будет.

git log --all --oneline --grep="FOO-1337" --pretty=format:"%C(auto)%h $(git branch --contains=%h)"

Есть ли более короткое решение, чем циклическое прохождение выводаgit log как в следующем:

for commit in $(git log --all --oneline --grep="FOO-1337" --pretty=format:"%h");
do
     branches=$(git branch --contains=$commit | tr '\n' ',')
     git show --oneline --quiet --pretty=format:"%C(auto)%h ${branches}" $commit; 
done

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

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Если я правильно понимаю, вы бы хотели, чтобы ваша команда git log показала все имена ветвей? Вы можете просто использовать параметр --decorate, который будет отображать все ссылки (ветви, теги, ...) для каждого коммита: что-то вроде:

git log --all --oneline --decorate ...

Если вы хотите, чтобы ветви отображались только (ине теги), вы можете использовать:

--decorate-refs=refs/{remotes,heads}/

дополнительную информацию в документации git log

1 голос
/ 15 октября 2019

Как насчет включения информации об украшении в формате:

git log --all --oneline --grep="FOO-1337" --pretty=format:"%C(auto)%h %D"

Разве это не поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...