> Ok, in that case we would just need a cherry-pick that can commit to a > separate branch, however I don't think git internals allow that kind > of thing. Which is the best way to implement this git-cherry-push command? # naive implementation (BASH function): gitCherryPush(){ # start a subshell so that failures don't quit your shell because of # set -e ( set -e local branch=$(cat .git/HEAD | sed 's@ref: refs/heads/\(.*\)@\1@') local otherBranch=$1; shift commits="$( for range in "$@"; do local HAS_DOTS=${range%%*..*} # add -1 if commit is not a range git rev-list --reverse ${HAS_DOTS:+-1} "$range" done )" echo "checking out other branch" git checkout "$otherBranch" echo "$commits" | while read c; do git cherry-pick "$c" || { echo "cherry-picking $c failed. fix it, exit 1 to abort. Starting subshell now" $SHELL || [ "$?" != 1] || return } done echo "checking out original branch $branch" git checkout $branch ) } zsh completion: compdef _gitCherryPush gitCherryPush _gitCherryPush(){ typeset -A opt_args _arguments -S \ ':branch to which to move commit range:__git_branch_names' \ ':branch to which to move commit range:__git_commit_ranges2' } Example usage (push last 5 commits) gitCherryPush branch-to-push-to HEAD~4 HEAD~4..HEAD Can I checkout the other branch without touching the working copy? I don't think so because cherry-pick will fail operating if working directory is not clean, correct? Is something like this worth comitting to the main repo? Marc Weber -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html