Использование git log --full-history --simplify-merges
!
--full-history
уже делает то, что вы хотите, но в нем перечислено много слияний, которые предоставляют мало информации.
Добавление --simplify-merges
скрывает некоторые из этих слияния.
Проверьте подробные объяснения git help log
.
Это имеет значение, только если указан путь. Без указанного пути он все равно показывает все выбранные вишни коммиты.
> git log --graph --decorate --pretty=oneline --abbrev-commit --abbrev=8 -- x.txt
* 8543e6d8 Add x.txt
> git log --simplify-merges --full-history --graph --decorate --pretty=oneline --abbrev-commit --abbrev=8 -- x.txt
* 0de2139f (HEAD -> master) Merge 'alternative' into master.
|\
| * 22a3a296 Add x.txt
* 8543e6d8 Add x.txt
Интересно, что этот путь также может быть глобальным подстановочным знаком.
> git log --graph --decorate --pretty=oneline --abbrev-commit --abbrev=8 -- *
* 2c970073 Add z.txt
* 22a3a296 Add x.txt
* 0af2f788 Add y.txt
* e7696150 (tag: BEGIN) Add a jpg image
> git log --simplify-merges --full-history --graph --decorate --pretty=oneline --abbrev-commit --abbrev=8 -- *
* 0de2139f (HEAD -> master) Merge 'alternative' into master.
|\
| * 2c970073 Add z.txt
| * 22a3a296 Add x.txt
| * 0af2f788 Add y.txt
* | 3856adbf Add y.txt
* | 8543e6d8 Add x.txt
|/
* e7696150 (tag: BEGIN) Add a jpg image
Caveats
Я обнаружил, что git log
намного медленнее с --full-history
и --simplify-merges
в большом репо со сложной историей.
Если указан диапазон фиксации, например, git log <parameters> master..develop -- <path>
, тогда гораздо больше слияний отображается даже с --simplify-merges
.
Полезные псевдонимы
Параметры полезны в сочетании с параметром --graph
. У меня уже есть псевдонимы lol
и lola
(есть сообщения в блоге, где люди придумывают эти имена, я их не придумывал).
Так что теперь я добавил это в свой глобальный git config:
[alias]
lol = log --graph --decorate --pretty=oneline --abbrev-commit --abbrev=8
lola = log --graph --decorate --pretty=oneline --abbrev-commit --abbrev=8 --all
lolf = log --graph --decorate --pretty=oneline --abbrev-commit --full-history --simplify-merges --abbrev=8
lolaf = log --graph --decorate --pretty=oneline --abbrev-commit --full-history --simplify-merges --abbrev=8 --all
Хорошо ли, что git log ведет себя таким образом?
Возможно, нет. Проверьте комментарий от torek ниже.