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



у меня есть две ветви devel и next. В devel у меня есть более или менее огромное количество коммитов. Некоторые из коммитов-вишня, собранная в next. Также я добавил некоторые коммиты к next, которые объединены в devel.



теперь я хотел бы посмотреть, чего не хватает в next, Так что я могу проверить изменения в деталях, прежде чем приводить их в next. Мой вопрос теперь, как я могу увидеть, какие коммиты находятся в devel но не в следующем?

385   5  
git

5 ответов:

малоиспользуемая команда git cherry показывает вам коммиты, которые еще не были выбраны. Документация для git cherry и здесь, но, в целом, вы должны просто быть в состоянии сделать:

git checkout devel
git cherry next

... и смотрите вывод немного так:

+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9

коммиты, которые начинаются с + будут те, что вы пока нет вишней в next. В этом случае я пока выбрал только один коммит. Возможно, вы захотите добавьте до git cherry команда, так что он также выводит строку темы каждого фиксации.

кроме того, вы можете использовать

git log --left-right --graph --cherry-pick --oneline devel...next

чтобы получить хороший список фактический различные коммиты не разделяются между ветвями.

ключевое слово --cherry-pick

--cherry-pick

опустите любую фиксацию, которая вводит то же самое изменение, что и другая фиксация на "другой стороне", когда набор фиксаций ограничен симметричной разницей. Например, если у вас есть две ветви, A и B, обычный способ перечислить все коммиты только на одной стороне из них с --left-right, как в примере выше в описании этой опции. Однако он показывает коммиты, которые были выбраны из другой ветви (например," 3rd on b " может быть выбран из ветви A). С помощью этой опции такие пары коммитов исключаются из выходных данных.

обновление как уже упоминалось в комментарии, последние версии git добавил --cherry-mark:

--cherry-mark

Like --cherry-pick (см. ниже), но отметьте эквивалентные коммиты с=, а не опуская их, и неэквивалентные с +.

вы могли бы попробовать сделать git log подмножества:

git log --oneline devel ^next

как о

git log next..devel

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

чтобы получить список коммитов, которые не были интегрированы в основную ветку (далее) вы можете использовать:

git rev-list --reverse --pretty="TO_TEST %h (<%ae>) %s" --cherry-pick --right-only origin/release_branch...origin/development_branch | grep "^TO_TEST " > NotIntegratedYet.txt

Регистрация git-rev-list для получения дополнительной информации.

Comments

    Ничего не найдено.