Наиболее готовый ответ:
git show-branch
Что вы можете сделать для большего контроля - это использовать git log
приложение git rev-list
:
git log --left-right --graph --cherry-pick \
--oneline branchname...remote/branchname
Это мой предпочтительный метод иприведет к чему-то вроде
> | fff6bda remote fix
< | c8903ee local fix
< | 724373c Merge branch 'bla' into bla
|\ \
| < | 2faf547 details
| < | abbdc47 ....
|/ /
< | befc181 some tagged commit
Включите --decorate, и вы получите что-то похожее на gitk, git-gui и gitweb:
> | fff6bda remote fix
< | c8903ee local fix
< | 724373c (tag_4) Merge branch 'bla' into bla
|\ \
| < | 2faf547 details
| < | abbdc47 ....
|/ /
< | befc181 (tag_3) some tagged commit
PRO TIP 1: Используйте 'git config alias.lr log --long-option1 --long-option2
' для удобного использования
PRO TIP 2: Используйте 'git config color.ui auto
' для немедленного облегчения зрения
Если хотите все локальные главы ( во всех локальных ветвях ) против все удаленные коммиты ( в тех же ветвях ):
git log --decorate --pretty=oneline --all --not --glob=refs/remotes --no-walk
Оставьте без прогулок, чтобы получить все отдельные ревизии.В этом случае я предпочитаю использовать переключатели, показанные ранее (--graph --left-right)
Merges
Если вы хотите увидеть слияния четко, включите --boundary
Различные расширенные запросы:
Фильтрация результатов
Git log
и rev-list
поддерживают множество возможностей хитрой фильтрации, см. Справочную страницу
--after '2001-01-01'
--until 'last week'
--author 'martin'
-E -i --grep='fixes #[0123456789]+'
-S 'new_debug_function'
и многие, многие другие.Это должно дать вам множество рычагов для получения именно той информации, которую вы хотите, практически без усилий
Что хранится локально?
Что находится в хранилищах, но не на удаленных (заметьте, что нет никакого способачтобы ссылаться на тайники на удаленных ветках, потому что тайники находятся в рефлогах, а рефлоги (даже для удаленных веток) всегда отражают локальную историю [1]):
git log $(git rev-list -g stash) --not --glob=refs/remotes
Все (другие) недоступные коммиты ...
Примечания
- в моем рабочем процессе эти изменения только исправлены / исправлены только коммиты и удаленные тайники
- также их генерация займет некоторое время в зависимости от размера вашего графика истории
это будет включать все удаленные тайники, но не текущие таймеры
git log $ (git fsck --unreachable --full --lost-found | grep 'commit' | cut-d '' -f3) \ --no-walk --not --glob = refs / remotes --oneline --decorate
Сценарии
Для сценариевВ целях замены замените использование git log
на git rev-list
, и вы получитетолько хэши (и еще немного устойчивости скриптов)
[1] См. также мои предыдущие ответы о том, как переносить тайники между репозиториями: