git log: squash нескольких изменений в одно
От: halo Украина  
Дата: 22.08.18 09:32
Оценка:
Здравствуйте. Есть примерно следующий результат выполнения git log --oneline --graph:

*   3124ba6b
|\  
| * a0512513
| * 5c63276b
| * 7a4d3b1e
| * 31f3defa
|/  
*   12d69b32
|\  
| * 8bf82cb4
| * 95775c86
| * 811b4104
|/  
*   80b0256a
|\  
| * 28a2e4b1
|/  
*   a3f1af3f


Если убрать --graph, результат получится таким:

3124ba6b
a0512513
5c63276b
7a4d3b1e
31f3defa
12d69b32
8bf82cb4
95775c86
811b4104
80b0256a
28a2e4b1
a3f1af3f


что весьма удобно для просмотра "линейных" изменений по нарастающей. Поскольку мы не используем rebase+squash на оригинальные ветки, такой лог можно в некоторых случаях считать засорённым из-за merge-коммитов и из-за того, что a0512513..a0512513~4 и 8bf82cb4..8bf82cb4~3 не были squash-ed. Можно ли как-то заставить git log сделать что-то типа виртуального "squash"? Примерно таким образом:

*   3124ba6b
|\  
| * a0512513..31f3defa
|/  
*   12d69b32
|\  
| * 8bf82cb4..811b4104
|/  
*   80b0256a
|\  
| * 28a2e4b1
|/  
*   a3f1af3f


Нечто похожее можно сделать с помощью git log --oneline --graph --merges, но он не совсем подходит, потому что лог покажет только 3124ba6b, 12d69b32, 80b0256a, a3f1af3f + не гарантируется, что успешный pull-request завершился merge-коммитом с вменеямым сообщением (доступа к тонкой настройке BitBucket заказчика попросту нет + есть история ещё до миграции на BitBucket). В идеале, интересует следующий вывод:

* a0512513..31f3defa (не важно как формируется общее сообщение)
* 8bf82cb4..811b4104 (не важно как формируется общее сообщение)
* 28a2e4b1 (должно отобразить сообщение коммита 28a2e4b1)


Т.е., хочется, чтобы git делал squash при выводе истории изменений, ограниченных коммитами у которых несколько дочерних коммитов. Спасибо.
Отредактировано 22.08.2018 9:34 halo . Предыдущая версия .
git
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.