Подтвердить что ты не робот

Как я могу найти все коммиты, которые находятся в одной ветке, но не в другой, используя git?

У меня два ветки, мастер и живые. Мастер - это разработка  и содержит коммиты, которые не готовы вживаться.

  • Если в мастер-ветке произошли изменения, которые необходимо живая ветка, тогда они выбраны из мастера, чтобы жить.
  • Иногда фиксируются вещественные ветки, которые затем вишня выбрана в мастера или слита в мастера.

То, что я хочу сделать, это просмотреть все коммиты, которые находятся в главном, чем не вживую, у меня был хороший поиск здесь и Google, и я использовал это:

git log --cherry-pick --no-merges --oneline master...live

Это сработало, пока я не объединился в мастер. Но теперь он перечисляет несколько коммитов, которые находятся в обоих.

Итак, какова правильная команда для просмотра всех коммитов, находящихся в главной ветки, а не в живой ветке?

4b9b3361

Ответ 1

Я решил решить свою проблему, используя короткий python script, объединяющий git patch-id и git журнал, script можно найти здесь https://gist.github.com/4565584

Ответ 2

Вы очень близки. Правильная команда:

git log --cherry-pick --oneline --no-merges --left-only master...live

на странице журнала:

--left-only, --right-only

Список только фиксируется на соответствующей стороне симметричного диапазона, то есть только те, которые будут помечены как < соответственно > by -left-right.

Например, --cherry-pick -right-only A... B пропускает те коммиты из B, которые находятся в или являются патчами, эквивалентными фиксации в A. Другими словами, это перечисляет + фиксации из git cherry A B. Точнее, --cherry-pick -right-only -no-merges дает точный список.

Ответ 3

git log master ^live --no-merges