Send a pull request on GitHub for only latest commit

后端 未结 7 1498
一整个雨季
一整个雨季 2020-11-29 14:45

I forked a project on github and am successfully making changes to my local master and pushing to origin on github. I want to send a pull request, but only want to include t

7条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-29 14:49

    Based on @kevin-hakanson's answer, I wrote this little bash script to make this process easier. It will add the upstream repo if it doesn't already exist (prompting you for the URL) then prompt for both the name of the new branch to create and the tag / SHA of the commit to cherry pick onto that branch. It checks what branch or commit you're currently on then stashes any changes so you can checkout the new branch. The merge strategy keeps the changes from the cherry-picked commit. After pushing the new branch to origin (assumed to be the name of your remote repo), the branch or commit you were on before is checked out again and your previous changes popped from the stash.

    if ! git remote | grep -q upstream; then
        read -p "Upstream git repo URL: " upstream
        git remote add upstream $upstream
        git remote update
    fi
    
    read -p "Feature branch name: " feature_branch
    # note: giving "master" is the same as giving the SHA it points to
    read -p "SHA of commit to put on branch: " sha
    
    current_branch=$(git rev-parse --abbrev-ref HEAD)
    if [ "$current_branch" == "HEAD" ]; then
        # detached HEAD; just get the commit SHA
        current_branch=$(git rev-parse --short HEAD)
    fi
    git stash
    git checkout -b $feature_branch upstream/master
    git cherry-pick --strategy=recursive -X theirs $sha
    git push origin $feature_branch
    git checkout $current_branch
    git stash pop
    

    (This has worked for me in a couple of simple tests, but I'm not a bash programmer or git expert, so let me know if there are cases I've missed that could be automated better!)

提交回复
热议问题