Как увидеть, какие коммиты в одной ветке не находятся в другой?
у меня есть две ветви devel и next. В devel у меня есть более или менее огромное количество коммитов. Некоторые из коммитов-вишня, собранная в next. Также я добавил некоторые коммиты к next, которые объединены в devel.
теперь я хотел бы посмотреть, чего не хватает в next, Так что я могу проверить изменения в деталях, прежде чем приводить их в next. Мой вопрос теперь, как я могу увидеть, какие коммиты находятся в devel но не в следующем?
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-markLike --cherry-pick (см. ниже), но отметьте эквивалентные коммиты с=, а не опуская их, и неэквивалентные с +.
как о
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