Найти все коммиты в конкретной ветке в GIT

Это может быть повторный вопрос, но я не нашел точных ответов.

Допустим, у меня есть 2 ветки br1 и br2 с 3 коммитами в каждой.

br1

  • совершить
  • совершить б
  • совершить с

br2

  • совершить г
  • совершить е
  • совершить е

Когда я сливаюсь с br2 на br1, git log на br1 show фиксирует a,b,c,d,e,f.

Допустим, у меня есть 2 ветки br1 и br2 с 3 коммитами в каждой.

br1 после слияния с br2

  • совершить
  • совершить б
  • совершить с
  • совершить г
  • совершить е
  • совершить е

Есть ли способ отфильтровать коммиты, которые были созданы только на br1? (Я пробовал git log br1..br2, но есть ли другой способ?)

Если слияние было Быстрая перемотка вперед или Automerge, GIT запишет какой-нибудь коммит для слияния? (я вижу коммит, когда есть конфликт, но не в automerge)

3 ответа

Ветвь - это просто указатель на конкретный коммит. Таким образом, вы не можете выяснить, из какой ветки пришел определенный коммит.

При ускоренной перемотке единственное, что изменяется, - это то, что коммит, на который указывает определенная ветвь, переключается, поэтому дополнительная фиксация записываться не будет. Если вы хотите записать дополнительный коммит, используйте git merge --no-ff,

Я не уверен, почему это важно знать, но если это так, то вы можете создать новую ветку из br1 и использовать эту ветку для объединения br2. Затем br1 и br2 не изменяются, и вы можете сказать, какой из них включает какие изменения, а у вас также есть ветвь слияния, содержащая оба набора изменений.

br1

  • б
  • с

br2

  • d
  • е
  • е

mbr1_2

  • б
  • с
  • d
  • е
  • е

Проблема с git log br1..br2 является то, что он будет пытаться подавить коммиты коммиты, которые являются частью br1, но все коммиты теперь являются частью br1, так что ничего не покажет.

Что вы можете сделать, это найти коммит прямо перед слиянием br2; git log br1^..br2, но это будет работать только в том случае, если br1 не продвинется вперед.

В общем, лучший способ - найти соответствующее слияние и показать коммиты, которые были объединены:

git log merge^1..merge^2
Другие вопросы по тегам