Предположим, ваша история коммитов git выглядит так:
A---B---C---D---E---F master
\ /
X---Y---Z topic
Возможно ли, чтобы в git list были только коммиты на master, AF? Другими словами, если фиксация была в объединенной ветке, я не хочу, чтобы она отображалась.
D
иZ
было частью объединенной ветки?git log
позволяет отображать только те коммиты, с помощью которых--first-parent
вы получаете правильный материалОтветы:
git log
есть опция--first-parent
, поэтому вы не получитеtopic
историю.Когда в результате объединения
master
, вmaster
коммиты первые родители в слиянии. Журнал Git позволяет отображать только те коммиты с параметром --first-parent, так что вы получите нужные данные.источник
--first-parent
делает это :) в сочетании с--no-merges
вы можете скрыть коммиты слиянияTL ; DR :
git log origin/master --no-merges
предоставит вам журнал мастера и исключит любые объединенные коммиты (в данном случае x, y, z)Исходные очки
Есть еще один общий способ сделать это, от которого не зависит,
--first-parent
который будет полезен в определенных ситуациях ... с помощью фильтров исключения ветвейgit log origin/topic ^origin/master
Это даст вам журналorigin/topic
со всемиorigin/master
удаленными коммитами.вы также можете добавить,
--no-merges
что будет скрывать коммиты слияния, которые вы можете или не хотите.Другой полезный совет - использовать
shortlog
вместо негоlog
более краткое изложение, которое может быть полезно для примечаний к выпуску или сообщения о том, что в ветке.Обновление.
После того, как вы перечитаете это, вам действительно захочется почти противоположное тому, что я опубликовал; однако это приведет к исключению всего, что есть в master и foo (
git log origin/master ^origin/foo
). Однако вы также можете получить то, о чем просите (скрыть все коммиты, являющиеся частью слияний), с помощьюgit log origin/master --no-merges
источник
Мне подходит ответ Чарльза.
Но если вы используете любой графический пользовательский интерфейс для своих действий Git, например Git Extension, SourceTree, Tortoise Git,
Затем есть прямые варианты проверки первого родителя в ваших инструментах. Я подумал добавить этот ответ в список, поскольку большинство людей находят графический интерфейс простым. и при необходимости вы можете напрямую выбрать все коммиты из этой конкретной ветки из инструмента.
Я приложил пример двух инструментов, он будет аналогичен и для других инструментов: [Я размыл имя пользователя, имя репозитория git, поскольку это частный репозиторий, но вы все же можете понять, как использовать первого родителя из инструментов ]
источник
Это не работает?
источник