Существует на самом деле команда с именем мерзавец cherry, который печатает каждый коммит, который не сливались между двумя ветвями.
Для каждой напечатанной фиксации знак «+» означает, что вы можете объединить его, знак «-» означает, что вы уже вишнево выбираете, что совершить.
Выход не очень красивый.
Для тех, кто пришел из SVN и используются для svnmerge.py, я сделал «svnmerge -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 помогло -l».
Я полагаю, что изменения вишни не должны быть изменены вручную (как насчет конфликтов?), Если изменения patch id, git cherry не поймет, что фиксация уже выбрана вишней.
Хотя у вас, вероятно, есть веские основания для этого, обычно это плохая идея, чтобы черешня выбрала слишком много коммитов в ветку. –