Команда git для отображения несвязанных ветвей для конкретного пользователя в главном репо

Команда git для отображения несвязанных ветвей для конкретного пользователя в главном репо

git branch -a --no-merged master

Используется указанная выше команда, но невозможно выполнить фильтрацию по конкретному пользователю, поскольку объем нераспределенных ветвей составляет 3 КБ, их необходимо очистить.


56
2

Ответы:

Решено

Предполагая, что «для конкретного пользователя» означает автора или коммиттера последнего коммита в подсказке, используйте все, что хотите, для создания коммитов-кандидатов и git log для фильтрации и аннотирования списка:

git for-each-ref --no-merged=master --format='%(objectname)' refs/heads refs/remotes \
| git log --no-walk --stdin --pretty='%h %an %d' --author = "your name here" # or --committer= and %cn, or whatever.

git log--no-walk говорит, что вам не нужны истории, вам просто нужна информация о конкретных коммитах. --stdin говорит, что вы генерируете список и кормите его таким образом, остальное все как обычно.

изменить: остроумие на лестнице говорит: «Да, git log сам могу найти все ветки и пульты».

git log --no-walk --branches --remotes --pretty='%h %an %d' --author=Jim

git branch -r --no-merged | xargs git show --no-patch --oneline --format='%cI %h %an %S' | grep "$(git config user.name)"

-r: Remote Branches or `-a`: for all branches
--no-merged:  Branches which are unmerged
`|` pipe that command to `git show`
xargs: passes each branch listed to `git show`
--no-patch: suppress the diff output
--oneline: pretty prints the output
--format:
  - %cI: ISO8601 date format
  - %h: abbreviated commit hash
  - %an: Author name
  - %S: ref name
`|` pipe that command to `grep`
-- grep: grep the author configured at `git config user.name`