На самом деле есть команда с именем git cherry , которая печатает каждый коммит, который не объединен между двумя ветвями.
Для каждого напечатанного коммита знак «+» означает, что вы можете объединить его, знак «-» означает, что вы уже выбрали этот коммит.
Вывод далеко не красивый.
Для тех, кто пришел из SVN и привык к svnmerge.py , я создал эквивалентный bash-скрипт для sit svnmerge poss -l, который я назвал gitavail:
#!/bin/bash
# get current branch
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
# get tracked branch (1st argument), if no arg or arguments are only options, assume master
if test -z $1 || grep -q '^-' <<< $1;
then TRACKED_BRANCH=master
else TRACKED_BRANCH=$1; shift
fi
# Log commits available for merge from tracked branch
LOG_OPTIONS=$*
for i in $(git cherry $CURRENT_BRANCH $TRACKED_BRANCH | egrep '^\+' | awk '{print $2}'); do git --no-pager log -n1 $i ${LOG_OPTIONS}; echo; done
Предполагая, что вы находитесь на ветке и хотите перечислить, что можно объединить с основной веткой, просто запустите:
gitavail --name-status
И вы получите вывод, очень похожий на «svnmerge vend -l».
Полагаю, коммиты cherry-pick нельзя изменять вручную (как насчет конфликтов?), Если id патча изменится, git cherry не поймет, что коммит уже был выбран вишней.