V'è in realtà un comando chiamato git cherry che stampa ogni commit che non si fonde tra due rami.
Per ogni commit stampato, il segno "+" significa che è possibile unirlo, il segno "-" significa che si seleziona già quel commit.
L'output è lungi dall'essere bello.
Per coloro che sono venuti da SVN e vengono utilizzati per svnmerge.py, ho fatto una "inutilmente svnmerge -l" script bash equivalente per git, che ho chiamato 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
supponendo che si sta su un ramo, e si desidera elencare ciò che è ammissibile per unire dal ramo principale, basta eseguire:
gitavail --name-status
e avrete un output molto simile a "inutilmente -l svnmerge".
Immagino che i commit di cherry-pick non debbano essere modificati manualmente (per quanto riguarda i conflitti?), Se le modifiche patch id, git cherry non si renderanno conto che il commit è già stato selezionato.
fonte
2013-09-11 16:15:05
Anche se probabilmente hai una buona ragione per farlo, di solito è una cattiva idea scegliere un numero eccessivo di commit in una filiale. –